# 217. 存在重复元素
# 题目
给定一个整数数组,判断是否存在重复元素。
如果任意一值在数组中出现至少两次,函数返回 true
。如果数组中每个元素都不相同,则返回 false
。
例
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
# 题解
# 排序
排序后重复的数字肯定相邻
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
nums.sort((a, b) => a - b);
for (let i = 0; i < nums.length - 1; ++i) {
if (nums[i] == nums[i + 1]) return true;
}
return false;
};
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
时间复杂度: 由排序决定
空间复杂度: O(1)
# 哈希表
遍历数组存入哈希表,如果发现存在即是重复
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
let m = new Map();
for (let i = 0; i < nums.length; ++i) {
const cur = nums[i];
if (m.has(cur)) {
return true;
} else {
m.set(cur, 1);
}
}
return false;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
时间复杂度: O(n)
一次遍历
空间复杂度: O(n)
和数组元素数量成线性关系