• 弱智写法:两个循环

    /**
     * @param {number[]} nums
     * @return {boolean}
     */
    var containsDuplicate = function(nums) {
        if (nums.length == 1) return false
        for (let i = 0; i<nums.length; i++) {
            for (let j = 0; j<nums.length; j++) {
                if (i == j) continue
                if (nums[i] == nums[j]) {
                    return true
                }
            }
        }
        return false
    };
    弱智写法

    排序然后比较两个相邻的元素,但是用到 sort() 函数 不推荐

    /**
     * @param {number[]} nums
     * @return {boolean}
     */
    var containsDuplicate = function(nums) {
        nums.sort()
        for(let i = 0; i < nums.length; i++) {
            if (nums[i] == nums[i+1]) return true
        }
        return false
    };

    第三种方法:set方法

    set对象用于储存唯一值,如果nums有重复的值,会自动去掉,然后再比较长度就行了

    /**
     * @param {number[]} nums
     * @return {boolean}
     */
    var containsDuplicate = function(nums) {
        return new Set(nums).size < nums.length
    };

    但是感觉用到此类高级方法,算法题就变得没意思了

    方法四:将值全部储存在map,然后有遇到重复的就返回true

    /**
     * @param {number[]} nums
     * @return {boolean}
     */
    var containsDuplicate = function (nums) {
        const map = new Map();
        for (let i = 0; i < nums.length; i++) {
            if (map.has(nums[i])) {
                return true;
            } else {
                map.set(nums[i], 1);
            }
        }
        return false;
    };
    

    map对象学习: http://es6.ruanyifeng.com/#docs/set-map#Map