找出一个数组中出现一次的数字
题目描述:
现在有一个整数类型的数组,数组中素只有一个元素只出现一次,其余的元素都出现两次。
示例:
输入[1,0,1]
返回值:0
思路:
这里我们使用异或运算(即^)比较方便,异或运算具有以下特点:
1.相同数字异或为0,不同为1;
2.0与任何数字异或都为该数字自己;
3.异或运算满足结合律和交换律;
在示例中1 ^ 0 ^ 1=1 ^ 1 ^ 0=0。因此为了找出一个数组中那个只出现了一次的元素,只需要把数组中每个元素进行异或运算即可,代码如下:
class Solution {
public:
/** *
* A int整型一维数组
* n int A数组长度
* int整型
*/
int singleNumber(int* A, int n) {
int res=0;
for(int i=0;i<n;i++)
res^=A[i];
return res;
}
};