题目:存在重复元素
leetcode链接:初级算法 - 存在重复元素
说明:给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
理解:
1、有一个整数数组
2、数组可能有重复元素
3、判断数组是否存在重复元素,如果是,返回true,否则返回false
思路:
1、判断原数组和去重后的数组长度是否一致,一致返回false,否则返回true
2、借用临时变量存储数组元素的Boolean值,一旦发现临时变量存在值为true的情况,返回true,如果都没有则返回false
3、将数组排序,然后利用双指针法进行判断
题解:
方案一:比较前后数组长度
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
var set = new Set(nums)
return set.size !== nums.length
};
方案二:借用临时变量存储数组元素的Boolean值
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
var obj = {}
for (let i = 0; i < nums.length; i++) {
if (!obj[nums[i]]) {
obj[nums[i]] = true
} else {
return true
}
}
return false
};
方案三:将数组排序,然后使用双指针进行判断
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function(nums) {
nums.sort((n1, n2) => n1 - n2)
var slow = 1
var fast = 1
for (let i = 0; i < nums.length; i++) {
if (nums[fast] === nums[fast - 1]) {
slow++
return true
}
fast++
}
return false
};
总结:
本题相对简单,相信还有更多,更优的解题方案,暂时先整理这些了