1、題目
給定一個整數數組,每個元素都出現了兩次,但有一個只出現了一次,請找出這個數。
Note:算法要求有線性時間複雜度,並且不佔用額外的空間。
2、解法:
public class Solution {
public int singleNumber(int[] A) {
int re=0;
int i;
for(i= 0;i<A.length;i++){
re = re^A[i];
}
return re;
}
}
3、思路:
異或的特點:
1).異或滿足交換律。如1^2^1=1,2^1^1=2,一個數被另外兩個數異或兩次,該數本身不變。
2).相同兩個數異或爲0。
3).0異或一個數爲那個數本身。
4、擴展:
異或也可以實現兩個數據的交換,不用臨時變量的方法。
x = x^y;
y = x^y;
x = x^y;