Maximum XOR With an Element From Array LeetCode solution in Python
1class Trie:2def __init__(self):3self.root = {}45def insert(self, num):6p = self.root7for i in range(31, -1, -1):8cur = (num >> i) & 19if cur not in p:10p[cur] = {}11p = p[cur]1213def query(self, num):14if not self.root:15return -116p, ans = self.root, 017for i in range(31, -1, -1):18cur = (num >> i) & 119if 1 - cur in p:20p = p[1 - cur]21ans |= 1 << i22else:23p = p[cur]24return ans252627class Solution:28def maximizeXor(self, nums: List[int], queries: List[List[int]]) -> List[int]:29nums.sort()30queries = sorted(enumerate(queries), key=lambda x: x[1][1])31trie = Trie()32ans = [-1] * len(queries)33j = 034for i, (x, m) in queries:35while j < len(nums) and nums[j] <= m:36trie.insert(nums[j])37j += 138ans[i] = trie.query(x)39return ans