Review
- 2024-11-13 07:53
[!Summary]
一、Introduction #
异或 ^ 特点
- 相同为0,不同为1
- 满足交换律、结合律
a^b == b ^ aa^b^c == a^(b^c)
习题
- 一个数组,只有一个数出现奇数次,其他都是偶数次,找出奇数次的数
- 一个数组,只有2个数出现奇数次,其他都是偶数次,找出这2个数
function getValue1(arr) {
let exr = 0;
for (let i of arr) {
exr ^= i;
}
console.log(exr);
return exr;
}
getValue1([1, 2, 3, 3, 2, 1, 5, 5, 3, 3, 5]);function getValue2(arr) {
let exr = 0;
for (let i of arr) {
exr ^= i;
}
let rightOne = exr & (~exr + 1);
let a = 0;
for (let i of arr) {
if ((i & rightOne) === 0) {
a ^= i;
}
}
const b = exr ^ a;
console.log(a, '**', b);
return [a, b];
}
getValue2([1, 2, 3, 3, 2, 1, 5, 5, 3, 3, 5, 3]);