给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
示例 1:
输入: [1,2,3,1]
输出: true
示例 2:
输入: [1,2,3,4]
输出: false
示例 3:
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
第一次提交
用了一个比较笨的方法,把元素都变成obj里面的key,利用hasOwnProperty,判断是否有重复,并且用some方法循环,一旦有重复就会终止程序返回true
var containsDuplicate = function(nums) {
const obj = {};
return nums.some((item)=>{
if(!obj.hasOwnProperty(item)){
obj[item] = item
return false
}else{
return true
}
})
};
![](https://img.haomeiwen.com/i4194227/34a88eedbc1d0218.png)
第二次提交
第二次想到了一个更加精妙的办法,利用es6新增的Set去重,对比去重吼的长度和去重前的长度,不就知道是否有存在重复的元素了,大概看了已经算最佳实现了
var containsDuplicate = function(nums) {
return new Set(nums).size !== nums.length
};
![](https://img.haomeiwen.com/i4194227/d60f01d0dbfe6e2a.png)
网友评论