[位運算、異或] 只出現一次的數字

題目

給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

分析

常規方法很容易,但是最巧妙最高效的方法應該是位運算,異或操作。

異或操作滿足三個特性:

  1. 任何數和 0 做異或運算,結果都是原來的數。

  2. 任何數和自身做異或運算,結果都是 0

  3. 異或運算滿足數學等式上的交換律和結合律

算法代碼

public int singleNumber(int[] nums) {
    int num = nums[0];
    for (int i = 1; i < nums.length; i++) {
        int temp = nums[i];
        num ^= temp;
    }
    return num;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章