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; }

浙公网安备 33010602011771号