Maximum XOR of Two Numbers in an Array LeetCode solution in Python

1
class Solution:
2
def findMaximumXOR(self, nums: List[int]) -> int:
3
TrieNode = lambda: defaultdict(TrieNode)
4
root = TrieNode()
5
for n in nums:
6
cur = root
7
for i in range(31, -1, -1):
8
bit = 1 if n & (1 << i) else 0
9
cur = cur[bit]
10
cur["val"] = n
11

12
ans = 0
13
for n in nums:
14
cur = root
15
for i in range(31, -1, -1):
16
bit = 1 if n & (1 << i) else 0
17
if bit == 1:
18
if 0 in cur:
19
cur = cur[0]
20
else:
21
cur = cur[1]
22
else:
23
if 1 in cur:
24
cur = cur[1]
25
else:
26
cur = cur[0]
27
ans = max(ans, cur["val"] ^ n)
28

29
return ans

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0