题目描述
有一个整数类型的数组,数组中素只有一个元素只出现一次,其余的元素都出现两次,要求给出线性复杂度解法,且不使用任何辅助空间
思路解析
采用异或的特性。
1.二进制运算时,相同为0,不同为1
2.对于任何数x有 0^x=x
3.交换律:3^5 ^3等价于 3^3 ^5
4.自反律:3^5 ^5=3 ^0=3
所以设一初值为0的变量,对数组中每个元素异或一边即可
实现代码
class Solution {
public:
int singleNumber(int A[], int n) {
int result=0;
for(int i=0;i<n;++i){
result^=A[i];
}
return result;
}
};