📅  最后修改于: 2023-12-03 15:11:31.770000             🧑  作者: Mango
在 JavaScript 中,找到第一个重复的元素是一项常见的任务。它可以用于许多不同的场景,例如在数组中查找重复项、检查一个字符串中是否有重复字符等等。
最简单的方法是使用双层循环,比较每个元素是否出现在数组中的另一个位置。如果是,则返回该元素。
function findFirstDuplicate(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
return arr[i];
}
}
}
return null;
}
该函数的时间复杂度为 O(n^2),不适用于大型数据集。
使用哈希表可以将时间复杂度减小到 O(n)。遍历数组,将每个元素存储到哈希表中。如果该元素已经存在于哈希表中,则返回该元素。
function findFirstDuplicate(arr) {
const map = {};
for (let i = 0; i < arr.length; i++) {
if (map[arr[i]]) {
return arr[i];
}
map[arr[i]] = true;
}
return null;
}
使用 Set 是一种更简单的方法,它可以将时间复杂度降低到 O(n)。将数组中的每个元素添加到 Set 中,如果添加失败,则说明该元素已经存在于 Set 中,返回该元素。
function findFirstDuplicate(arr) {
const set = new Set();
for (let i = 0; i < arr.length; i++) {
if (set.has(arr[i])) {
return arr[i];
}
set.add(arr[i]);
}
return null;
}
这里介绍了三种寻找第一个重复元素的方法。双层循环是最基本的方法,但时间复杂度较高;使用哈希表可以将复杂度降低到 O(n),但需要额外的空间;使用 Set 是最简单的方法,同时也会将时间复杂度降低到 O(n)。在实际应用中,可以根据不同的场景选择不同的方法。