大话前端

存在重复

2018-04-06  本文已影响8人  fenerchen

题目

给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数应该返回 true。如果每个元素都不相同,则返回 false。

思路

方法一
使用es6,对数组去重,然后判断新数组和老数组的长度是否相等,若相等则返回false,否则返回true。
方法二
遍历数组,每次弹出数组中第一个元素,判断是否有重数,若有则返回true,否则返回false

AC代码

法一

/**
 * @param {number[]} nums
 * @return {boolean}
 */
var containsDuplicate = function(nums) {.
    return nums.length==[...new Set(nums)].length?false:true;
};

法二

var containsDuplicate = function(nums) {
    var len = nums.length;
    while (nums) {//即便传入空数组,也执行while,因为Boolean([])==true但是console.log([]==true?1:0)//0
        if (len <= 1) {
         return false; 
        } else {
            let temp = nums.shift();
            if (nums.indexOf(temp) >= 0) { 
                return true; 
            } 
            len--;
        }
    }
};
上一篇 下一篇

猜你喜欢

热点阅读