大家一起加油,我喜欢分专栏将知识打碎成一份一份小知识点,一篇文章只说一个知识点,因此每篇文章篇幅较短,希望大家不要介意。如有需要可以查看专栏看看是否有该文章中涉及到的知识点进行讲解的文章,如果大家觉得有帮助,希望大家三连支持一下。 |
推荐阅读
题目描述
给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。
代码实现
方法1双重for
const nums = [1, 2, 3, 1];
const nums2 = [1, 2, 3];
// 依然还是握手题
var containsDuplicate = function(nums) {
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
if (nums[i] == nums[j]) {
return true
}
}
}
return false
};
console.log(containsDuplicate(nums));
console.log(containsDuplicate(nums2));
方法2Set+size
const nums = [1, 2, 3, 1];
const nums2 = [1, 2, 3];
var containsDuplicate = function(nums) {
// jsSet有去重效果
return new Set(nums).size == nums.length;
};
console.log(containsDuplicate(nums));
console.log(containsDuplicate(nums2));
方法3Object+keys()+length
const nums = [1, 2, 3, 1];
const nums2 = [1, 2, 3];
var containsDuplicate = function(nums) {
// js对象属性具有唯一性
let obj = {};
for (const iterator of nums) {
obj[iterator] = iterator;
}
return Object.keys(obj).length == nums.length;
};
console.log(containsDuplicate(nums));
console.log(containsDuplicate(nums2));
方法4forEach()+indexOf()+length
const nums = [1, 2, 3, 1];
const nums2 = [1, 2, 3];
var containsDuplicate = function(nums) {
// 遍历判断新数组中是否有值,不重复添加值,最后判断新数组和数组长度是否相等
let arr = [];
nums.forEach(function(item) {
if (arr.indexOf(item) == -1) {
arr.push(item);
}
})
return arr.length == nums.length;
}
console.log(containsDuplicate(nums));
console.log(containsDuplicate(nums2));
方法5sort()+for
const nums = [1, 2, 3, 1];
const nums2 = [1, 2, 3];
var containsDuplicate = function(nums) {
// 先排序,再判断相邻项是否相等
nums.sort();
for (let i = 0; i < nums.length - 1; i++) {
if (nums[i] == nums[i + 1]) {
return true;
}
}
return false;
};
console.log(containsDuplicate(nums));
console.log(containsDuplicate(nums2));
![](https://i-blog.csdnimg.cn/blog_migrate/0a01cc1df87cf84e9d3ccb1f8277e466.png)