
异或(exclusive OR,缩写成xor)是一个数学运算符,它应用于逻辑运算,相同为0,不同为1。
异或具有以下特点:
- 0异或任意一个数字,结果就等于那个数字本身
- 两个相同的数字进行异或运算,结果等于0
存在一个数组nums,包含一个或者正整数,其它数字都出现2次,只有一个数字出现了1次。
找出仅出现一次的数字。
[传统]方式一:将数字和出现的次数存入Map,最后从Map中查询出出现一次的数字
const nums = [1,2,3,4,3,2,1]
var map = new Map();
for(let i=0; i<nums.length; i ) {
let key = nums[i] ''
let val = map.get(key);
if(val) {
map.set(key, val)
continue;
}
map.set(key, 1)
}
let ret = 0
for (let key of map.keys()) {
if(1 === map.get(key)) {
ret = key;
break;
}
}
console.log(ret)
方式二:遍历数字,使用异或运算
var nums = [1,2,3,4,3,2,1]
let ret = 0;
for(let i=0; i<nums.length; i ) {
ret ^= nums[i]
}
console.log(ret)
方式三:通过reduce进行异或运算
var nums = [1,2,3,4,3,2,1]
let ret = arr.reduce((a, b)=>a^b)
console.log(ret),

















