GitHub Viewer
public class L0476_NumberComplement {
// 解法一:构造掩码
public int findComplement(int num) {
// 找到最高位
int mask = num;
mask |= mask >> 1;
mask |= mask >> 2;
mask |= mask >> 4;
mask |= mask >> 8;
mask |= mask >> 16;
// 异或得到补数
return num ^ mask;
}
// 解法二:使用 highestOneBit
public int findComplementV2(int num) {
// 找到最高位的位置
int highestBit = Integer.highestOneBit(num);
// 构造掩码:(highestBit >= 1;
mask