弱智写法:两个循环
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
if (nums.length == 1) return false
for (let i = 0; i<nums.length; i++) {
for (let j = 0; j<nums.length; j++) {
if (i == j) continue
if (nums[i] == nums[j]) {
return true
}
}
}
return false
};

排序然后比较两个相邻的元素,但是用到 sort() 函数 不推荐
/**
* @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方法
set对象用于储存唯一值,如果nums有重复的值,会自动去掉,然后再比较长度就行了
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
return new Set(nums).size < nums.length
};

但是感觉用到此类高级方法,算法题就变得没意思了
方法四:将值全部储存在map,然后有遇到重复的就返回true
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function (nums) {
const map = new Map();
for (let i = 0; i < nums.length; i++) {
if (map.has(nums[i])) {
return true;
} else {
map.set(nums[i], 1);
}
}
return false;
};
