421. 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
Solution
maximum-xor-of-two-numbers-in-an-array.py
class Solution:
def findMaximumXOR(self, nums: List[int]) -> int:
mask = res = 0
for i in range(31, -1, -1):
mask = mask | (1 << i)
sset = set()
for num in nums:
sset.add(num & mask)
desired = res | (1 << i)
for prefix in sset:
anotherSum = prefix ^ desired
if anotherSum in sset:
res = desired
break
return res