1. 解题思路
这一题就是一个比较典型的XOR的题目,我们只需要考察每一位上所有数字中1的个数,显然要使得其最终的XOR结果与target保持一致,那么就是要使得其与target上对应位的值保持与2的同余一致,否则就需要对其中某一个数进行flip操作。
然后,我们考察所有二进制位上的情况,即可得到我们最少需要的操作数。
2. 代码实现
给出python代码实现如下:
class Solution:
def minOperations(self, nums: List[int], k: int) -> int:
n = len(nums)
cnt = defaultdict(int)
for x in nums:
bits = bin(x)[2:]
for i, b in enumerate(bits[::-1]):
if b == "1":
cnt[i] += 1
ans = 0
k = bin(k)[2:][::-1].ljust(20, "0")
for i in range(20):
if cnt[i] % 2 != int(k[i]):
ans += 1
return ans
提交代码评测得到:耗时1429ms,占用内存32MB。