描述:
给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。
样例:
给出 [1,2,2,1,3,4,3],返回 4。
要求:
时间复杂度为O(n),空间复杂度为O(1)。
标签:贪心
思路:
利用了异或位运算的性质,即:一个数与自身异或的结果为0;异或满足交换律。
遍历数组中的每一个元素,并将其进行异或,异或结果即为只出现一次的那个数。
代码:
class Solution {
public:int singleNumber(vector<int> &A) {
int result=0;
for(int i=0;i<A.size();i++){
result^=A[i];
}
return result;
}
};