力扣
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素
解题思路:
使用位异或的新思想,相同为0,不同为1,1^1=0,1 ^ 0=1,0^0=0
同理可推,a^ a= 0,a ^ b=1,不断循环比较,则最后一个为返回值。代码如下
int singleNumber(int* nums, int numsSize){ int result=0; for(int i=0;i<numsSize;i++){ result^=nums[i]; } return result; }
输出如图:
时间复杂度:由于是每个挨个比较则为O(n)。
空间复杂度:无辅助空间,O(1)。