leetcode (Contains Duplicate)
阿新 • • 發佈:2018-11-24
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快很多: