https://leetcode.com/problems/maximum-xor-for-each-query
1829. Maximum XOR for Each Query
字太多 不说了
就给一个 nums
先计算所有的 xor
然后配上一个 k 使得结果为小于 2^maximumBit 的最大值
排掉最后一个 num 后循环继续做
思路:
反著做 最后再 reverse()
在研究 XOR 的时候 发现一篇文章 a, b 进行三次 XOR 就能把 a, b 互换
a, b = 5, 11
a = a ^ b (14, 11)
b = a ^ b (14, 5)
a = a ^ b (11, 5)
首先跟 0 xor 后再跟 2^maximumBit-1 xor 就能得到 k
将 k 加入 list 后再跟 2^maximumBit-1 做一次 xor 就能恢复到原本的进度
重复循环就好
Python Code:
class Solution:
def getMaximumXor(self, nums: List[int], maximumBit: int) -> List[int]:
ans = []
maximized = 2 ** maximumBit - 1
k = 0
for num in nums:
k ^= num
k ^= maximized
ans.append(k)
k ^= maximized
ans.reverse()
return ans
原本以为那个做三次对这题没帮助 结果刚才突然开窍 还不错 睡觉去 晚安