題目
給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
分析
常規方法很容易,但是最巧妙最高效的方法應該是位運算,異或操作。
異或操作滿足三個特性:
-
任何數和 0 做異或運算,結果都是原來的數。
-
任何數和自身做異或運算,結果都是 0
-
異或運算滿足數學等式上的交換律和結合律
算法代碼
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;
}