题面:
给定一个整数数组nums,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
解法一:哈希表
遍历数组nums,将nums的元素值对应为新数组newnum的下标,如果该位置元素值不为空,说明nums中的这个元素重复了。
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
var newnum = [];
for(var i=0;i<nums.length;i++){
if(newnum[nums[i]] == 1){
return true;
}
else{
newnum[nums[i]] = 1;
}
}
return false;
};
解法二:排序
数组nums排序后比较相邻两元素的值是否相等
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
nums.sort();
for(let i=0;i<nums.length;i++){
if(nums[i] == nums[i+1]){
return true;
}
}
return false;
};
解法三:set
把nums放入set中,如果set的长度小于原数组长度,则存在重复
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
let set = new Set(nums);
return set.size != nums.length;
};