题目描述
给出2*n+1个数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
思路
注意到异或操作,相同为0,不同为1,且0与任何数异或,均为该数本身。由于其他数字均出现两次,异或得到0。所以按顺序异或,即可得到答案。
C++代码
class Solution {
public:
/**
* @param a: An integer array
* @return: An integer
*/
int singleNumber(vector<int> &a) {
// write your code here
int result = a[0];
for (int i = 1; i < a.size(); ++i) {
result = result ^ a[i];
}
return result;
}
};