700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 力扣 136. 只出现一次的数字 【异或运算】

力扣 136. 只出现一次的数字 【异或运算】

时间:2023-09-05 18:17:01

相关推荐

力扣 136. 只出现一次的数字 【异或运算】

最简单的思路:

用数组的每一个数字遍历整个数组来统计每个数字的个数。

当个数为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;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。