DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

Maximum XOR of Two Numbers in an Array

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:

class Solution:
    def findMaximumXOR(self, nums: List[int]) -> int:
        n = len(nums)
        maxx = 0
        mask = 0
        se = set()
        for i in range(30, -1, -1):
            mask |= (1 << i)
            newMaxx = maxx | (1 << i)
            for i in range(n):
                se.add(nums[i] & mask)
            for prefix in se:
                if (newMaxx ^ prefix) in se:
                    maxx = newMaxx
                    break
            se.clear()
        return maxx
Enter fullscreen mode Exit fullscreen mode

Top comments (0)