原题:
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?
代码:
class Solution {
public:
int singleNumber(int A[], int n) {
int num = 0;
for(int i = 0;i<n; i++){
num ^= A[i];
}
return num;
}
};
思路:
其实只要记住:
1.异或满足交换律。
2.相同两个数异或为0。
3.0异或一个数为那个数本身。
最后结果即出现1次的那个数。
例子:1^2^3^4^4^3^2 = 2^2^3^3^4^4^1 = 1
拓展:http://blog.youkuaiyun.com/smile_watermelon/article/details/47748227