📜  第一个重复的 javascript (1)

📅  最后修改于: 2023-12-03 15:11:31.770000             🧑  作者: Mango

第一个重复的 JavaScript

在 JavaScript 中,找到第一个重复的元素是一项常见的任务。它可以用于许多不同的场景,例如在数组中查找重复项、检查一个字符串中是否有重复字符等等。

方法 1:使用双层循环

最简单的方法是使用双层循环,比较每个元素是否出现在数组中的另一个位置。如果是,则返回该元素。

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),不适用于大型数据集。

方法 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;
}
方法 3:使用 Set

使用 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)。在实际应用中,可以根据不同的场景选择不同的方法。