Title:Contains Duplicate II 219
Difficulty:Easy
原题leetcode地址:https://leetcode.com/problems/contains-duplicate-ii/
1. 采用HashMap,KEY存放数组中的数,Value存放数组中的下标,注意,HashMap中存放之前已经存在的key(value不一样),会重新更新同一个key的value值。
时间复杂度:O(n),一次for循环,遍历整个数组的长度。
空间复杂度:O(n),申请整个一个HashMap,最长需要存放n个。
/**
* 采用HashMap,KEY存放数组中的数,Value存放数组中的下标
* @param nums
* @param k
* @return
*/
public static boolean containsNearbyDuplicate(int[] nums, int k) {
if (nums == null || nums.length <= 1) {
return false;
}
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(nums[i])) {
if (i - map.get(nums[i]) <= k) {
return true;
}
map.put(nums[i], i);
}
else {
map.put(nums[i], i);
}
}
return false;
}