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.
정주로 이루어진 배열 nums
가 주어질 때0 <= i <= j < n.
조건하에 nums[i] XOR nums[j]
의 결과중 가장 큰 값을 구하시오.
Input: nums = [3,10,5,25,2,8]
Output: 28
Explanation: The maximum result is 5 XOR 25 = 28.
Input: nums = [14,70,53,83,49,91,36,80,92,51,66,70]
Output: 127
1 <= nums.length <= 2 * 10⁵
0 <= nums[i] <= 2³¹ - 1
/**
* @param {number[]} nums
* @return {number}
*/
var findMaximumXOR = function(nums) {
let maxResult = 0
for(let i = 0; i < nums.length; i++) {
for(let j = i + 1; j < nums.length; j++) {
const xorResult = nums[i] ^ nums[j]
maxResult = Math.max(maxResult, xorResult)
}
}
return maxResult
};
안타깝게도 Time Limit Exceeded에 걸렸다
근데 최대값을 다 해봐야 한다고 생각했기에.. 방법을 더 강구해본 결과..!!
/**
* @param {number[]} nums
* @return {number}
*/
var findMaximumXOR = function(nums) {
const sets = [...new Set(nums)] // set을 통해 중복되는 요소를 제거했다
let maxResult = 0
for(let i = 0; i < sets.length; i++) {
for(let j = i + 1; j < sets.length; j++) {
maxResult = Math.max(sets[i] ^ sets[j], maxResult)
}
}
return maxResult
}
비트연산자를 알 수 있었던 시간..!
Feedback은 언제나 환영입니다🤗