Back to all solutions
#421 - Maximum XOR of Two Numbers in an Array
Problem Description
Given an integer array nums, return the maximum result of nums[i] XOR nums[j], where 0 <= i <= j < n.
Solution
/**
* @param {number[]} nums
* @return {number}
*/
var findMaximumXOR = function(nums) {
let result = 0;
for (let i = 31, mask = 0; i >= 0; i--) {
mask |= (1 << i);
const set = new Set(nums.map(num => num & mask));
const target = result | (1 << i);
for (const prefix of set) {
if (set.has(prefix ^ target)) {
result = target;
break;
}
}
}
return result;
};