给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。



异或运算的作用

参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1

也就意味着这个操作可以提取一堆数字当中唯一出现过的一个数

  即:

  0^0 = 0,
1^0 = 1,
0^1 = 1,
1^1 = 0
// 通俗理解
a ^ a = 0
0 ^ a = a


例如

136. 只出现一次的数字

解决这道问题就可以使用异或实现。

int singleNumber(int* nums, int numsSize){
int ret = 0;
for (int i = 0; i < numsSize; i++)
{
ret ^= nums[i];
}
return ret;
}


相关链接:


Ming | 与运算(&)、或运算(|)、异或运算(^)