大佬解法,大佬脑子太牛逼了,我是服了,读者自行解读代码。
class Solution(object):
def findMaximumXOR(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
res = 0
mask = 0
for i in range(31, -1, -1):
mask |= (1 << i)
# 当前得到的所有前缀都放在这个哈希表中
s = set()
for num in nums:
s.add(mask & num)
# 先“贪心地”假设这个数位上是 “1” ,如果全部前缀都看完,都不符合条件,这个数位上就是 “0”
temp = res | (1 << i)
for prefix in s:
if temp ^ prefix in s:
print(temp)
res = temp
break
return res