📅  最后修改于: 2023-12-03 15:40:15.524000             🧑  作者: Mango
题目描述:给定一个整数数组 nums 和一个整数 k ,找到将数组中的所有元素同时与 k 进行 XOR 运算后得到的最小值。
使用贪心算法,从高位到低位考虑。对于 k 的每一位,为了使与 k 运算后的结果最小,希望数组中这一位为 1 的数最少。所以我们可以统计数组中这一位为 1 的数的个数,如果为偶数,则不需要改变这一位的状态;如果为奇数,则需要把这一位取反,才能使结果最小。
def findMinimumXOR(nums: List[int], k: int) -> int:
res = 0
for i in range(31, -1, -1):
mask = 1 << i
cnt = sum((n & mask) != 0 for n in nums)
if cnt % 2 == 1:
res |= mask
return res ^ k