LeetCode219. 存在重複元素 II
阿新 • • 發佈:2020-12-12
思路:查詢表 + 滑動視窗(視窗大小固定)
class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { /** * 方法1:雜湊 */ /* Map<Integer,Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { if (map.containsKey(nums[i])) { if (i - map.get(nums[i]) <= k) return true; } map.put(nums[i], i); // hashMap中存入數字及其在陣列中最後出現的索引 } return false;*/ /** * 方法2:查詢表 + 滑動視窗 * [l, l+k] 視窗一共有 k + 1個元素 */ Set<Integer> set = new HashSet<>(); for (int i = 0; i < nums.length; i++) { if (set.contains(nums[i])) return true; set.add(nums[i]); if (set.size() == k + 1) { //保持set中最多有 k 個元素 set.remove(nums[i - k]); } } return false; } }