CodingTest/LeetCode

[LeetCode] 1346. Check If N and Its Double Exist, Easy

뜸부깅 2025. 3. 10. 17:14
반응형

1. 문제

  • 배열 arr이 주어질 때, i와 j에 대해 조건을 만족하는지 여부를 반환하라.

 

2. 해결

function checkIfExist(arr: number[]): boolean {
    for(let i = 0; i< arr.length; i++) {
        for(let j = 0; j < arr.length; j++) {
            if(i === j) continue;
            if(arr[i] === 2 * arr[j]) return true;
        }
    }
    
    return false;
};
  • 조건에 맞게 구현하면 된다.
function checkIfExist(arr: number[]): boolean {
    const values = new Set<number>();
    
    for (let i=0; i < arr.length; i++) {
        const num = arr[i];
        
        //there is a number wich has his value * 2
        if (values.has(num * 2)) return true;
        
        //the current value * 2 has a match. So we didn't need to check in another loop.
        if (values.has(num / 2)) return true;
        
        values.add(num);
    };
    return false;
};
  • 이건 다른 사람 풀이인데, 중복을 없애는 Set에 집어 넣고, O(n) 시간에 조건을 판별할 수 있더라.