219. Contains Duplicate II

Easy


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.

Example 1:

Input: nums = [1,2,3,1], k = 3
Output:
 true

Example 2:

Input: nums = [1,0,1,1], k = 1
Output:
 true

Example 3:

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

Constraints:

  • 1 <= nums.length <= 105

  • -109 <= nums[i] <= 109

  • 0 <= k <= 105

class Solution:
    def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
        d = defaultdict(list)
        for index,val in enumerate(nums):
            d[val].append(index)
        for key, l in d.items():
            if len(l) == 1:
                continue
            for i in range(1, len(l)):
                if abs(l[i] - l[i-1]) <= k:
                    return True
        return False

Last updated