219 list替换Set

来源:4-8 二分搜索树底层实现的顺序性 Contain Duplicate III

慕妹2978617

2020-04-15

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这个方法的原因吗?

写回答

1回答

liuyubobobo

2020-04-15

抱歉,我没有理解你的问题。这是 Leetcode 几号问题?你的错误代码是上面的代码吗?

0
2
liuyubobobo
回复
慕妹2978617
明白了。set.remove(x) 的意思是从 set 中删除掉 x 这个元素;但是 list.remove(x) 的意思是删除掉 x 索引所在的元素。二者的参数意思是不一样的。
2020-04-15
共2条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7415 学习 · 1150 问题

查看课程