X & 1 == 1 OR == 0 判断奇偶
X = X & (X-1 ) => 清零最低位的1
X & -X => 得到最低位的1
N皇后的位运算解法
const totalNQueens = function(n) {
let res = 0;
const dfs = (n, row, cols, pie, na) => {
if (row >= n) {
res++;
return;
}
let bits = (~(cols | pie | na)) & ((1 << n) - 1) // 1
while (bits) { // 2
let p = bits & -bits // 3
dfs(n, row + 1, cols | p, (pie | p) << 1, (na | p) >> 1) // 4
bits = bits & (bits - 1) // 5
}
}
dfs(n, 0, 0, 0, 0);
return res;
};
- 一个数和 0 做异或运算等于其本身
- 一个数和它本身做异或运算等于 0
- 异或运算满足交换律和结合律
136. 只出现一次的数字
const singleNumber = function(nums) {
let ans = 0
for (const num of nums) {
ans ^= num
}
return ans
}