Maximum XOR of Two Numbers in an Array LeetCode solution in Python
1class Solution:2def findMaximumXOR(self, nums: List[int]) -> int:3TrieNode = lambda: defaultdict(TrieNode)4root = TrieNode()5for n in nums:6cur = root7for i in range(31, -1, -1):8bit = 1 if n & (1 << i) else 09cur = cur[bit]10cur["val"] = n1112ans = 013for n in nums:14cur = root15for i in range(31, -1, -1):16bit = 1 if n & (1 << i) else 017if bit == 1:18if 0 in cur:19cur = cur[0]20else:21cur = cur[1]22else:23if 1 in cur:24cur = cur[1]25else:26cur = cur[0]27ans = max(ans, cur["val"] ^ n)2829return ans