这道题很不错,用位运算巧妙的解决。一开始我还想过multiset等等。^位运算才是王道,直接可以解决一堆数中,查找某个奇数个数的数字。
所有数字, ^ 自身等于0,这是这道题的核心。
另外再写一下 ^的常用用法,
用作swap, a=a^b;
b=b^a;
a=a^b;
这个式子就相当于 a=a^b^a。 等同于 a=b;
翻转数字,1^n。
class Solution {
public:
/*
* @param A: An integer array
* @return: An integer
*/
int singleNumber(vector<int> &A) {
// write your code here
int ans=0;
int s=A.size();
for(int i=0;i<s;i++)
{
ans^=A[i];
}
return ans;
}
};