LeetCode: Contains Duplicate II

LeetCode: Contains Duplicate II

Given an array of integers and an integer k, find out whether there there are two distinct indices iand j in the array such that nums[i] = nums[j] and the difference between i and j is at most k.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class ContainsDuplicateII {

public boolean containsNearbyDuplicate(int[] nums, int k) {
if (nums == null || nums.length < 2 || k < 1) {
return false;
}

Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; i++) {
if (!map.containsKey(nums[i])) {
map.put(nums[i], i);
} else {
if (map.get(nums[i]) < i - k) {
map.put(nums[i], i);
} else {
return true;
}
}

}
return false;
}
}