No.219 存在重复元素 II (滑动窗口

219. 存在重复元素 II - 力扣(LeetCode) (leetcode-cn.com)

 

思路:用一个长度为k的散列表set,来作为一个滑动窗口,set.contains()对每一个将要加入的数字进行判断是否重复.

    public boolean containsNearbyDuplicate(int[] nums, int k) {
        /*相当于维护了一个滑动窗口,这个滑动窗口是一个散列表Set
        不需要遍历这个滑动窗口,每次加入一个数字,就可以用set.contains()判断是否重复
        * */
         boolean ans = false;
         int len = nums.length;
        Set<Integer> set = new HashSet<>();
        for(int i=0; i<len; i++){
            if(set.contains(nums[i])){
                ans = true;
            }
            set.add(nums[i]);
            if(set.size()>k){
                set.remove(nums[i-k]);
            }
        }
         return ans;
    }

 

posted @ 2021-10-05 11:44  CharonKK  阅读(34)  评论(0)    收藏  举报