题目
https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/array/24/
个人解法
测试用例数(个) | 执行用时(ms) | 战胜 |
---|---|---|
18 | 120 | 77.80% |
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
var cache = {};
var len = nums.length;
for (var i = 0 ; i < len ; i++) {
if (!cache[nums[i]]) {
cache[nums[i]] = true;
} else {
return true;
}
}
return false;
};
最快解法
测试用例数(个) | 执行用时(ms) | 战胜 |
---|---|---|
18 | 72 | 100% |
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
return [...new Set(nums)].length < nums.length
};
分析
通过无序集合 Set
去重得到新数组, 比较新老数组的长度,以此判断,原数据中是否存在重复元素。
按这个思路,对比测试过另一种写法:
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
return (new Set(nums)).size < nums.length
};
从执行速度来看,会稍慢于前者。