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.
Solution:
public class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { if (nums.length<2) return false; HashSet<Integer> numSet = new HashSet<Integer>(); for (int i=0;i<nums.length;i++){ if (numSet.contains(nums[i])){ return true; } //add nums[i] into set numSet.add(nums[i]); // if full, then remove the left most one. if (numSet.size()>k) numSet.remove(nums[i-k]); } return false; } }