python代码:
class BitTrie(object):
def __init__(self):
self.root = {}
def insert(sef, nums):
node = sef.root
for i in range(30,-1,-1):
d = (nums>>i) & 1
node = node.setdefault(d, {})
def query(sef, nums):
res = 0
node = sef.root
for i in range(30, -1, -1):
d = (nums >> i) & 1
if (1-d) not in node:
node = node[d]
else:
node = node[1-d]
res += 1 << i
return res
class Solution(object):
def findMaximumXOR(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
bit_trie = BitTrie()
ans = 0
for num in nums:
bit_trie.insert(num)
ans = max(ans, bit_trie.query(num))
return ans
参考链接:
作者:endinggy
链接:https://www.acwing.com/solution/content/71586/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
[Leetcode421: 数组中两个数之间最大的异或值](https://www.jianshu.com/p/0f9d9f6641e4)