这道题目根上一道很类似,感觉就是考察java的数据结构的,很明显既然这里要求俩个元素之间的索引差值是否比k小,那么数据结构必须要用map了,我们可以把相同元素的索引存起来然后比较它们之间的差距看是否小于k
import java.util.Map;
import java.util.HashMap;
public class containsDuplicateII{
public static void main(String[] args) {
int[] arr = {1,2,3,1};
System.out.println(find(arr,3));
int[] brr = {1,2,3,1,2,3};
System.out.println(find(brr,2));
}
public static boolean find(int[] nums,int k) {
Map<Integer,Integer> mp = new HashMap();
for(int i = 0;i<nums.length;i++) {
if(mp.containsKey(nums[i])) {
if(i-mp.get(nums[i]) <= k) {
return true;
} else {
mp.put(nums[i],i);
}
} else {
mp.put(nums[i],i);
}
}
return false;
}
}