LeetCode 0421. Maximum XOR of Two Numbers in an Array Solution in Java, Python, C++, JavaScript, Go & Rust | Explanation + Code

CoderIndeed
0
0421. Maximum XOR of Two Numbers in an Array

Description

Given an integer array nums, return the maximum result of nums[i] XOR nums[j], where 0 <= i <= j < n.

 

Example 1:

Input: nums = [3,10,5,25,2,8]
Output: 28
Explanation: The maximum result is 5 XOR 25 = 28.

Example 2:

Input: nums = [14,70,53,83,49,91,36,80,92,51,66,70]
Output: 127

 

Constraints:

  • 1 <= nums.length <= 2 * 105
  • 0 <= nums[i] <= 231 - 1

Solutions

Solution 1

PythonJavaC++GoRust
class Trie: __slots__ = ("children",) def __init__(self): self.children: List[Trie | None] = [None, None] def insert(self, x: int): node = self for i in range(30, -1, -1): v = x >> i & 1 if node.children[v] is None: node.children[v] = Trie() node = node.children[v] def search(self, x: int) -> int: node = self ans = 0 for i in range(30, -1, -1): v = x >> i & 1 if node.children[v ^ 1]: ans |= 1 << i node = node.children[v ^ 1] else: node = node.children[v] return ans class Solution: def findMaximumXOR(self, nums: List[int]) -> int: trie = Trie() for x in nums: trie.insert(x) return max(trie.search(x) for x in nums)(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !