public static boolean containsNearbyDuplicate2(int[] nums, int k) {
//遍历nums中范围的值 这里用list 删除元素会错乱
Set<Integer> set = new HashSet<>();
for (int i = 0; i < nums.length; i++) {
int num = nums[i];
if (set.contains(num)) {
return true;
}
set.add(num);
if (set.size() == k + 1) {
set.remove(nums[i-k]);
}
}
return false;
}
老师 我用list发下这个解法就是错的,我debug打印几次list发现 list.remove 当E是Integer时 他不知道时删除元素还是删除索引,所以会错乱,但是我这里还是有点怀疑,list顺序添加 可以顺序取出的吧? 这个问题不能用list的原因是因为 remove这个方法的原因吗?