1. 程式人生 > 實用技巧 >LeetCode219. 存在重複元素 II

LeetCode219. 存在重複元素 II

思路:查詢表 + 滑動視窗(視窗大小固定)

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