Contains Duplicate II
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between i and j is at most k.
public class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
Set<Integer> set = new HashSet<>();
int start = 0, end = 0;
for (int num : nums) {
if (set.add(num)) {
end++;
} else return true;
if (end - start > k) {
set.remove(nums[start]);
start++;
}
}
return false;
}
}