最简单的思路:
用数组的每一个数字遍历整个数组来统计每个数字的个数。
当个数为1的时候输出它。
很显然的是这种方法的时间复杂度为O(n2)
那么有没有一种快速的方法呢?
用位运算。用异或来求就方便的多了。
我们先来了解一下异或的性质:
a^ b ^ a= b a^ a ^ c ^ b^ b=c 你会发现经过异或操作偶数个的数字都会抵消掉了。
那么我们就可以用这种方法来挨个异或我们数组的所有元素。
那么最后的结果就是单数个的数字,即我们所需要的结果。
代码如下:
int singleNumber(int* nums, int numsSize){int sum=nums[0];for(int i=1;i<numsSize;i++){sum=(sum^nums[i]);}return sum;}