Contains Duplicate II 重复索引在指定的长度
解题思路:
1.新建一个map,键---值 键是元素 值是元素最近一次出现的索引。
2.当前元素第一次出现put进map,如果是第二次出现,判断索引与第一次出现的索引是否在指定的范围內,在直接返回true,不在更新索引位置。
public static void main(String[] args) {
int[] arr={1,2,3,1,2,3};
int k=2;
boolean flag = containsNearbyDuplicate(arr, k);
System.out.println(flag);
}
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])){
map.put(nums[i],i);
}else{
Integer j = map.get(nums[i]);
if(i-j<= k){
return true;
}
//更新nums[i]的索引
map.put(nums[i],i);
}
}
return false;
}