题目: 给定一个整数数组,判断是否存在重复元素。

如果存在一值在数组中出现至少两次,函数返回 true ,
如果数组中每个元素都不相同,则返回 false   

思路1:将数组排序,后两两比较

var containsDuplicate = function(nums) {
  for(let k = 1; k < nums.length; k++){
     console.log(k,nums[k], nums[k-1])
     if( nums[k] == nums[k-1] )return true
   }
  return false
 };

思路2: 简单粗暴: 数组第一项 与剩余的数组进行对比,如果相等 true,否则false

var containsDuplicate = function(nums){
  for(let k = 0; k < nums.length; k++){
    for(let n = k + 1; n < nums.length; n++){ if(nums[k] == nums[n]) return true }
  }
  return false;
}

思路3: Set 排序后的长度,与初始传入的长度做比较

var containsDuplicate = function(nums){
   return nums.length !== [...new Set(nums)].length
 }

思路4:Se对象(允许你存储任何类型的唯一值)

var containsDuplicate = function(nums) {
  const set = new Set();
  for(let k of nums){
    if(set.has(k)) return true; 
    set.add(k)
  }
  return false
};

简单写几个Set对象用法:

 概念: Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用 
 使用:
  1.var Set = new Set() 创建一个新的Set对象

  2.Set.prototype.size  返回Set对象中值得个数

  3.Set.prototype.add(value) 给Set对象添加元素,返回该对象

  4.Set.prototype.clear() 清楚Set对象内的所有元素

  5.Set.prototype.delete(value) 删除Set对象内与之相等的元素

  6.Set.prototype.entries() 返回一个新的迭代器对象

  7.Set.prototype.has(value) 返回布尔值,判断该值是是否存在 
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐