JS算法:只出现一次的数字

  • Post author:
  • Post category:其他




只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。。


说明

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?


示例1:

输入: [2,2,1]
输出: 1


示例 2:

输入: [4,1,2,1,2]
输出: 4

代码如下:

var singleNumber = function(nums) {
let ans=0;
for(const num of nums){
    ans^=num     //运用了异或符 ^(下文详细说明)
}return ans;
};
console.log(singleNumber([2,2,1]))




异或符

异或符主要运用于位运算

简单来说有以下性质:

1.交换律:a ^ b ^ c  <=> a ^ c ^ b
2.任何数于0异或为任何数 0 ^ n => n
3.相同的数异或为0: n ^ n => 0

举例说明:

2 ^ 2 = 0
0 ^ 3 = 3
2 ^ 3 ^ 2 = 2 ^ 2 ^ 3= 0 ^ 3=3

本人写博客就是想记录一下自己所学的知识(目前正在学习中),巩固知识加深记忆,也顺便分享一下自己的所学,有什么地方写的不对,希望大家可以多多指出,让我及时改正。如果我分享的东西帮助到你,别忘了点赞、分享、收藏呦~!

注:如有侵权,请联系删除。



版权声明:本文为weixin_53542481原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。