Reference: LeetCode
Difficulty: Easy
Problem
Given an array of integers and an integer
k, find out whether there are two distinct indicesiandjin the array such thatnums[i] = nums[j]and the absolute difference betweeniandjis at mostk.
Example:
| 1 | Input: nums = [1,2,3,1], k = 3 (diff = 3) | 
Analysis
Hash Map
Go through some cases that have duplicates, e.g. [1,0,1,1].
| 1 | public boolean containsNearbyDuplicate(int[] nums, int k) { | 
Time: $O(\min(N, k))$ since we don’t know how large k could be.
Space: $O(\min(N, k))$
Sliding Window (k-size set)
We can just use a hash set of size k. Whenever there is one more element, we remove the oldest element.
| 1 | // 0 1 2 3 4 | 
| 1 | public boolean containsNearbyDuplicate(int[] nums, int k) { | 
Time: $O(\min(N, k))$
Space: $O(\min(N, k))$
