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

如果存在一值在数组中出现至少两次,函数返回 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

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐