📌  相关文章
📜  最小化与给定数组元素进行XOR运算的K(1)

📅  最后修改于: 2023-12-03 15:40:15.524000             🧑  作者: Mango

最小化与给定数组元素进行XOR运算的K

题目描述:给定一个整数数组 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
复杂度分析
  • 时间复杂度:O(32 * n),其中 n 是数组 nums 的长度,需要遍历整个数组 32 次。
  • 空间复杂度:O(1),只需要常量级别的额外空间。