只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。。
说明
:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例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 版权协议,转载请附上原文出处链接和本声明。