这道题一眼看过去暴力,两层循环,找到相等的数字,然后判断一下就行,但是这样的话不符合哈希表使用原则。这道题同样利用了hash表键值配对的规则。
class Solution {
public boolean containsNearbyDuplicate(int[] nums, int k) {
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);
}
return false;
}
}
至于这道题目中所说的abs,这里为什么不用呢,因为其实我们是遍历,本来i就大于map.get[nums[i])所以不需要。