异或运算简单使用

异或运算的简单使用

参考: https://blog.csdn.net/qq_19272431/article/details/78564391

交换两个数

let a = 5
let b = 9

//a ^ b ^ b = a ^ 0 = a;
a ^= b; // <=> a = a + b
b ^= a; // <=> b = a - b <=> b = a ^ b ^ b = a ^ 0 = a
a ^= b; // <=> a = a - b <=> a = a ^ b ^ b = b ^ 0 = b

console.log(a) // 9
console.log(b) // 5

从数组中找出唯一元素

const singleNumber = (arr) => {
    const len = arr.length;
    let res = 0;

    if (!len) return null;
    if (len === 1) return arr[0];

    for (const element of arr) {
        res ^= element; // a ^ b ^ b = a
    }

    return res;
}

const arr = [1, 2, 3, 4, 5, 3, 2, 4, 5]
const res = singleNumber(arr)
console.log(res) // 1
posted @ 2022-04-23 21:13  白い故雪  阅读(32)  评论(0)    收藏  举报