数组 - 存在重复元素

题目

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
};

从执行速度来看,会稍慢于前者。

*****
Written by Zheng Yu on 10 May 2019