给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 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
方法一:
分析:先定义一个对象,遍历数组,用hasOwnProperty来判断对象里面是否存在这个数据,如果不存在,则往对象里面添加数据,如果存在则表示有重复数字,那么返回true,如果遍历结束后都没有重复,那么表示数组中没有重复的数字,在循环外面返回一个false
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
let obj = {}; //声明一个对象
for(let i =0;i < nums.length;i++){ //循环数组
if(!obj.hasOwnProperty(nums[i])){ //判断对象中是否存在该数据
obj[nums[i]] = 1; //没有,那么就储存该数据
}else{
return true; //没有,返回true
}
}
return false; //循环结束后,依旧没有重复,那么就返回false
};
方法二、
分析:先将数组进行排序,然后循环遍历,判断第i个和第i+1个是否相等,如果相等,那么返回true,循环结束后依旧没有相等那么返回false。
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
var len=nums.length;
var k=nums.sort();
for(var i=0;i<len;i++)
{
if(nums[i]==nums[i+1])
return true;
}
return false;
};
方法三、
分析:利用Set()的唯一性
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
if(nums.length <= 1)
return false;
return nums.length != [...new Set(nums)].length;
};
此方法在lettcode上
执行用时 :84 ms, 在所有 JavaScript 提交中击败了93.15% 的用户
内存消耗 :43.3 MB, 在所有 JavaScript 提交中击败了9.51%的用户