解题思路
该题的解题思路为,首先将数组中每个元素与哈希表进行比对,如果哈希表中不存在该元素,则将该元素添加进去,key为元素的值,value为元素的索引。反之,如果存在,就获取其索引值与当前索引值相减,判断其绝对值是否大于给定的k值,如果大于则返回true,否则更新当前索引值。
代码实现:
public static 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]))
{
Integer j = map.get(nums[i]);
if(Math.abs(i-j)<=k)
{
return true;
}
}
map.put(nums[i],i);
}
return false;
}