一、2980. 检查按位或是否存在尾随零
奇数二进制形式最右一位一定为1
偶数二进制形式最右一位一定为0
要存在尾随0至少要两个偶数进行或运算
代码
class Solution:def hasTrailingZeros(self, nums: List[int]) -> bool:cnt = 0for x in nums:if x%2==0:cnt+=1return True if cnt>=2 else False
二、1720. 解码异或后的数组
推导过程如下
x ^ x = 0
x ^ 0 = x
a ^ b = c
a ^ b ^ b = c ^ b
a = b ^ c
代码
class Solution:def decode(self, encoded: List[int], first: int) -> List[int]:n = len(encoded)+1ans= [0]*nans[0] = firstfor i in range(1,n):ans[i] = encoded[i-1] ^ ans[i-1]return ans
三、2429. 最小异或
灵神代码
class Solution:def minimizeXor(self, num1: int, num2: int) -> int:c1 = num1.bit_count()c2 = num2.bit_count()while c2 < c1:num1 &= num1 - 1 # 最低的 1 变成 0c2 += 1while c2 > c1:num1 |= num1 + 1 # 最低的 0 变成 1c2 -= 1return num1