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。
本文介绍了如何解决LeetCode题目10032,通过分析每一位上1的个数,确定是否需要对数组元素进行翻转操作,以使数组异或结果与给定目标值k相等。给出了Python代码实现及时间复杂度分析。
1877

被折叠的 条评论
为什么被折叠?



