217. Contains Duplicate
題目
Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.
Example 1
Input: nums = [1,2,3,1]
Output: true
Explanation:
The element 1 occurs at the indices 0 and 3.
Example 2
Input: nums = [1,2,3,4]
Output: false
Explanation:
All elements are distinct.
Example 3
Input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: true
Constraints
- $1 \le nums.length \le 10^5 $
題目難易度
Easy
解題想法
找出 nums 內的數值是否有重複。
Hash Table
- Time Complexity:
- Space Complexity:
把 nums 所有數值掃過一次,並存在 Map 中,最後檢查 Map 的每一個 key、value,是否有 value 大於等於 2 的。
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function (nums) {
const m = new Map();
for (let i = 0; i < nums.length; i++) {
m.set(nums[i], m.has(nums[i]) ? m.get(nums[i]) + 1 : 1);
}
for (let [key, value] of [...m]) {
if (value >= 2) return true;
}
return false;
};
Check Length
- Time Complexity:
- Space Complexity:
一樣把 nums 所有數值掃過一次,存在 Set 中,最後檢查 Set 的長度是否有比 nums 還短,有就是有重複。
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var containsDuplicate = function (nums) {
const numSet = new Set(nums);
return numSet.size < nums.length;
};