一、2980. 检查按位或是否存在尾随零
奇数二进制形式最右一位一定为1
偶数二进制形式最右一位一定为0
要存在尾随0至少要两个偶数进行或运算
代码
class Solution:
def hasTrailingZeros(self, nums: List[int]) -> bool:
cnt = 0
for x in nums:
if x%2==0:
cnt+=1
return 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)+1
ans= [0]*n
ans[0] = first
for 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 变成 0
c2 += 1
while c2 > c1:
num1 |= num1 + 1 # 最低的 0 变成 1
c2 -= 1
return num1