可以通过以下步骤解决这个问题:
-
计算 N 的二进制表示。
-
生成一个与 N 二进制长度相同的掩码(全部是 1)。
-
计算反码:掩码 XOR N。
-
返回结果。
下面是 Python 实现代码:
def bitwiseComplement(N: int) -> int:
if N == 0:
return 1 # 0 的反码是 1
bit_length = N.bit_length() # 获取 N 的二进制长度
mask = (1 << bit_length) - 1 # 生成相应长度的全 1 掩码
return N ^ mask # 计算反码并返回
# 测试
print(bitwiseComplement(5)) # 输出 2
print(bitwiseComplement(11)) # 输出 4
print(bitwiseComplement(0)) # 输出 1
说明:
-
N.bit_length()
计算 N 二进制表示的位数。 -
(1 << bit_length) - 1
生成与 N 位数相同的全 1 掩码。 -
N ^ mask
计算二进制反码。
该方法的时间复杂度是 O(logN),因为计算位数和执行 XOR 操作的复杂度都与位数相关。