存在重复

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

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

 

  1.方法一(暴力解法)

这个解法是第一时间脑海中反应出来的思路十分简单暴力
1.就是每一次都与后N个数对比 不存在就接着下一个和后N个对比
2.如果遇到相同则返回 true 反之就false

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

方法二( 该方法在写完方法一后,想着会有更优解,同时想到es6的set 去重后 利用该方法判断)
1利用es6 的set去重 再使用 Array.form方法将 set之后的对象转化为数组
 2.将转化后的的数组和原数组比较 长度相等则返回 false 反之里面必有重复 返回 true

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

 方法三 

思路
  1. 利用一个对象作为临时存储,同时利用对象KEY存在会返回对应值原理,查找是否重复
  2. 对传入数组循环,若不存在则,将该索引下数组内容作为对象KEY并赋值为true,若再有这个数遇到则可利用其做相应判断
3. 若全程未遇到则返回false

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

 

转载于:https://www.cnblogs.com/jjq-exchange/p/11118795.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值