题目:
题目要求线性时间复杂度,并且不允许开辟额外的空间
运用位运算中的^(异或运算符)可以很好的解决这个问题
^,二进制下相同为0,相异为1,便有
a^a=0;自己异或自己等于0
a^0=a;任何数字和0异或等于他自己
a^b^c=a^c^b;异或具有交换律
如此,额外定义一个变量依次与数组中的各元素进行异或运算即可高效解决本题
int singleNumber(int* nums, int numsSize){
int t=0;
for(int i=0;i<numsSize;i++)
t=t^nums[i];
return t;
}