给定一个整数数组,判断是否存在重复元素。
如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
例:
输入: [1,2,3,1]
输出: true
输入: [1,2,3,4]
输出: false
输入: [1,1,1,3,3,4,3,2,4,2]
输出: true
思路:
利用数组方法sort进行排序,判断前一个和后一个是否相等,只要相等就返回true,否则返回false. arr.sort(function(a,b) return a-b)第一种方式代码:
var containsDuplicate = function (nums) {
nums.sort(function (a, b) {
return a - b;
});
for (var i = 1; i <nums.length; i++) {
if (nums[i - 1] === nums[i]) return true;
}
return false;
};
第二种方式代码
这种方式用ES6 提供了新的数据结构 Set,它类似于数组,但是成员的值都是唯一的,没有重复的值 (set本身是一个构造函数,用来生成 Set 数据结构) 注意用Set生成的是一个对象,不要用nums1.length来进行判断var containsDuplicate = function (nums) {
var nums1 = new Set(nums)
if( nums1.size === nums.length){
return false
}else{
return true
}
};
误区:我之前写的代码是
var containsDuplicate = function (nums) {
nums.sort(function (a, b) {
return a - b;
});
for (let i = 1; i < nums.length; i++) {
if (nums[i - 1] === nums[i]){ console.log(111);
return true;
}else{
return false;
}
}
};
containsDuplicate([1, 2, 3, 3]);