1. 程式人生 > >leetcode (Contains Duplicate II)

leetcode (Contains Duplicate II)

Title:Contains Duplicate II   219

Difficulty:Easy

原題leetcode地址:https://leetcode.com/problems/contains-duplicate-ii/

 

1. 採用HashMap,KEY存放陣列中的數,Value存放陣列中的下標,注意,HashMap中存放之前已經存在的key(value不一樣),會重新更新同一個key的value值。

時間複雜度:O(n),一次for迴圈,遍歷整個陣列的長度。

空間複雜度:O(n),申請整個一個HashMap,最長需要存放n個。

    /**
     * 採用HashMap,KEY存放陣列中的數,Value存放陣列中的下標
     * @param nums
     * @param k
     * @return
     */
    public static boolean containsNearbyDuplicate(int[] nums, int k) {

        if (nums == null || nums.length <= 1) {
            return false;
        }

        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);
            }
            else {
                map.put(nums[i], i);
            }
        }

        return false;

    }