想法:数组类可以多尝试使用set,map,栈等结构的特殊属性辅助解答
题目:
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true
。如果数组中每个元素都不相同,则返回 false
。
题解:
解1.利用set的不重复性,将原数组生成set,对比两者长度,不同则表示原数组有重复数字
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
let sets = new Set(nums)
return Array.from(sets).length !== nums.length
};
解2:
在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素。
var containsDuplicate = function(nums) {
nums.sort((a, b) => a - b);
const n = nums.length;
for (let i = 0; i < n - 1; i++) {
if (nums[i] === nums[i + 1]) {
return true;
}
}
return false;
};