Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
重复两次的数字异或之后为0,因此将全部异或叠加就可以得到最终的数字
class Solution{
public:
int singleNumber(int A[], int n){
if(n == 0) return 0;
int temp = A[0];
for(int i = 1 ; i < n ; ++i){
temp ^= A[i];
}
return temp;
}
};
public class singleNumber {
public int singlenumber(int[] A){
int len = A.length;
if(len == 0)return 0;
int temp = A[0];
for(int i = 1 ; i < len ; ++i)
temp ^= A[i];
return temp;
}
}