작심삼일

[LeetCode] 219 | Contains Duplicate II | Python 본문

스터디/코테

[LeetCode] 219 | Contains Duplicate II | Python

yun_s 2022. 10. 21. 09:40
728x90
반응형

문제 링크: https://leetcode.com/problems/contains-duplicate-ii/


문제

Given an integer array nums and an integer k, return true if there are two distinct indices i and j in the array such that nums[i] == nums[j] and abs(i - j) <= k.


조건

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

내 풀이

(num, idx)로 구성된 dictionary를 이용할 것이다.

nums를 앞에서부터 훑으며 Dictionary에 num이 없다면 (num, 현재 index)를 추가한다.

Dictionary에 num이 있다면 (num, idx)의 idx와 현재 index 사이의 거리가 k 이하라면 True를 리턴한다.


코드

class Solution:
    def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
        index = {}
        
        for idx, num in enumerate(nums):
            if num not in index:
                index[num] = idx
                
            else:
                if abs(idx - index[num]) <= k:
                    return True
                
                index[num] = idx
        
        return False
728x90
반응형
Comments