관리 메뉴

FU11M00N

[LeetCode] Contains Duplicate II - Javascript 본문

알고리즘

[LeetCode] Contains Duplicate II - Javascript

호IT 2023. 9. 1. 05:08

Contains Duplicate II

[같은 값을 가지고 k보다 같거나 작은 인덱스 구하기]

제약 조건 

1 <= nums.length <= 10^5
-10^9 <= nums[i] <= 10^9
0 <= k <= 10^5

 

Example

ex1) Input: nums = [1,2,3,1], k = 3
     Output: true
ex2) Input: nums = [1,0,1,1], k = 1
     Output: true

ex3) Input: nums = [1,2,3,1,2,3], k = 2
     Output: false

문제 접근 방식

문제를 처음 읽었을 때 이해가 안 가서 문제만 20분 넘게 본 거 같다,,
대충 해석해 보자면 nums 정수 배열이랑 k 정수가 주어지는데,
배열이 같은 값을 가지면서 그 간격 크기가 k보다 값이 같거나 작을 때 true를 리턴해야 한다.

obj 변수에 빈 객체를 생성하고
obj[nums[i]]가 undefined이고, i - obj[nums[i] 값이 k보다 작거나 같으면 true를 리턴한다.
아니라면 obj 객체에 배열의 값과 i의 값을 넣는다.

solve 전체 코드

/**
 * @param {number[]} nums
 * @param {number} k
 * @return {boolean}
 */
function containsNearbyDuplicate(nums, k) {
    let obj = {};
    for (let i = 0; i < nums.length; i++) {
        if (obj[nums[i]] !== undefined && i - obj[nums[i]] <= k) {
            return true;
        }
        obj[nums[i]] = i;
        console.log(obj)
    }
    return false;
}
Comments