leeCode算法--找出只出现一次的数字

题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。算法应该具有线性复杂度,并且不使用额外的空间。

解析:在给定的数组中,很有规律,除了只出现一次的元素外,其他的每个元素均只出现俩次,这就让我们想到了异或运算(^)。即,任意数a和0的运算:a⊕a=0;a⊕0=a,所以代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
let singleNumber = nums => {
if (!nums.length) {
return
}
let m = 0
for(let i of nums) {
m ^= i
}
return m
}
singleNumber([4,1,2,1,2]) // 4
singleNumber([2,2,1]) // 1

所以本题的思路是非常难的,代码很简单,快补充一下异或运算啊。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2022 Lee
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信