在 JavaScript 中查找具有多个重复项的数组中的所有重复数字

javascriptweb developmentfront end technologyobject oriented programming更新于 2024/12/8 22:04:17

在给定的问题陈述中,我们必须借助 JavaScript 功能查找具有多个重复项的数组中的所有重复数字。因此,我们将使用基本的 Javascript 来解决这个问题。

理解问题

当前的问题是借助 JavaScript 查找数组中的重复数字。因此,我们将提取给定数组中出现多次的所有数字。作为响应,我们将获得重复数字的数组。例如,假设我们有一个数组 [1, 1, 4, 8, 2, 2, 6, 6, 6]。因此,在这个数组中,重复或重复的项目是 [1, 2, 6]。因此,此数组将是函数的输出。

给定问题的逻辑

为了解决给定的问题,我们将使用一个对象来记录看到的每个数字的计数。因此,我们将遍历数组,对于每个项目,我们将验证条件,即该项目是否已存在于对象中。如果已经存在,则我们将计数增加 1。否则,我们将该项目添加到对象中,初始计数为 1。结果,我们从对象中获得了计数大于 1 的数字,这是重复数字所需的数组。

算法

步骤 1:因为我们必须在给定的数组中找到重复的数字,所以为了解决这个问题,我们将定义一个函数并将其命名为 findDuplicates,并且在这个函数中我们将传递一个参数数组。此数组将包含重复项。

步骤 2:创建上述函数后,我们将创建一个空白哈希图或对象来存储重复数字计数。并创建一个包含空值的数组。并将其命名为 duplicates,此数组将存储输入数组的重复数字。

步骤 3:现在我们在函数内部,其中我们已经定义了哈希图来存储重复数字信息。因此,之后我们将迭代数组中的每个元素。然后检查该项目是否作为哈希图中的键存在。

步骤 4:因此,如果哈希图中存在键,我们将计数增加一。否则,我们将该项目添加到哈希图中,初始计数为一。

步骤 5:在此步骤中,我们将使用另一个 for 循环遍历哈希图键值对。

第 6 步:然后我们将检查条件,如果数字的计数大于 1,我们将把它添加到结果数组中。

示例

//查找重复项的函数
function findDuplicates(array) {
   const countMap = {};
   const duplicates = [];

   for (let i = 0; i < array.length; i++) {
      const num = array[i];
      countMap[num] = (countMap[num] || 0) + 1;
   }

   for (const num in countMap) {
      if (countMap[num] > 1) {
         duplicates.push(Number(num));
      }
   }

   return duplicates;
}

//函数用法
const numbers = [1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8, 8];
const result = findDuplicates(numbers);
console.log(result);

输出

[ 4, 6, 8 ]

复杂度

查找数组中所有重复数字的时间复杂度为 O(n),其中 n 是给定输入数组的大小。因为我们只迭代了给定数组一次来更新计数图。而且这种方法的空间复杂度也是 O(n),因为计数图在最坏情况下可以包含所有不同的数字。

结论

因此,借助哈希图或对象来记录计数,我们找到了所有具有多个数字的重复数字。借助该函数,我们可以轻松找出数组中的重复项并创建一组新的重复项。


相关文章


有用资源