LintCode :落单的数
题目
给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
样例
给出 [1,2,2,1,3,4,3],返回 4
思路
我们知道两个相同的数异或为零,在给出的数据中除了落单的之外其他的数都有两个,所以把所有的数异或之后就能得到落单的那个数了。
代码
int singleNumber(vector<int> &A) {
if(A.size() == 0)
return 0;
int result = 0;
for(vector<int>::iterator it = A.begin(); it < A.end(); it++)
result = result xor *it;
return result;
}