判断数组是否存在重复元素 - 四种方式
·
题目: 给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 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) 返回布尔值,判断该值是是否存在
更多推荐
已为社区贡献1条内容
所有评论(0)