问题
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k
例子
思路
-
方法1
-
方法2
代码
//方法1
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(Math.abs(i-map.get(nums[i]))<=k) return true;
//如果|i-map.get(nums[i])|<=k,则更新为大的index,即现在的index
else
map.put(nums[i],i);//更改index为i
}else
map.put(nums[i],i);
}
return false;
}
}
//方法2