思路,首先将数组nums中前k个数放入map中查看是否有相同的,如果在,返回true;如果没有,添加;
然后,检查后面的每一个数是否在map中,如果在,返回ture;如果没有,添加,并删除map中最先添加的那个;
public class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
if(nums.length<=1){
return false;
}
Map<Integer, String> map = new HashMap<Integer, String>();
for (int i = 0; i < nums.length; i++) {
if (map.get(nums[i]) == null) {
map.put(nums[i], "");
if (i >= k) {
map.remove(nums[i - k]);
}
} else {
return true;
}
}
return false;
}
}
本文介绍了一种使用哈希映射检查数组中是否存在相隔不超过k个位置的重复元素的算法。通过维护一个滑动窗口大小为k的哈希表,可以高效地解决此问题。
964

被折叠的 条评论
为什么被折叠?



