[LeetCode] 421. Maximum XOR of Two Numbers in an Array

Chobby·2026년 2월 13일

LeetCode

목록 보기
996/1040

😎풀이

  1. 왼쪽에서부터(가장 큰 비트) XOR 연산을 통해 1의 자리로 만들 수 있는지 검증
  2. 최댓값을 누적하며 가장 우측 비트까지 비교
  3. 확인된 최대 XOR 연산 결과 반환
function findMaximumXOR(nums: number[]): number {
    let maxXOR = 0
    let mask = 0
    for(let i = 31; i >= 0; i--) {
        mask |= (1 << i)
        const prefixes = new Set<number>()
        for(const num of nums) {
            prefixes.add(num & mask)
        }
        const goal = maxXOR | (1 << i)
        for(const prefix of prefixes) {
            if(prefixes.has(prefix ^ goal)) {
                maxXOR = goal
                break
            }
        }
    }
    return maxXOR
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글