Leetcode - Maximum XOR of Two Numbers in an Array

wanderer-s·2022년 1월 27일
0

Algorithm

목록 보기
13/19
post-thumbnail

Problem

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]의 결과중 가장 큰 값을 구하시오.

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 * 10⁵
  • 0 <= nums[i] <= 2³¹ - 1

Solution

JavaScript

  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에 걸렸다
근데 최대값을 다 해봐야 한다고 생각했기에.. 방법을 더 강구해본 결과..!!

  1. 두번째 시도
/**
 * @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은 언제나 환영입니다🤗

profile
You only get one life. It's actually your duty to live it as fully as possible.

0개의 댓글