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

leetcode (Contains Duplicate)

Title:Contains Duplicate   217

Difficulty:Easy

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

 

1. 採用HashMap的key的唯一性,時間&空間複雜度如下:

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

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

    /**
     * 採用HashMap中key的唯一性
     * @param nums
     * @return
     */
    public static boolean containsDuplicate(int[] nums) {

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

        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(nums[i])) {
                return true;
            }
            else {
                map.put(nums[i], 1);
            }
        }

        return false;
    }

2. 採用Set集合的唯一性,時間&空間複雜度如下:

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

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

    /**
     * 採用Set集合的唯一性
     * @param nums
     * @return
     */
    public static boolean containsDuplicate1(int[] nums) {

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

        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < nums.length; i++) {
            if (set.contains(nums[i])) {
                return true;
            }
            else {
                set.add(nums[i]);
            }
        }

        return false;
    }

同樣的時間複雜度,但是在執行過程中,set比map快很多: