在 JavaScript 中查找数组中包含多个重复数字的所有重复数字
在给定的问题陈述中,我们必须借助 Javascript 功能来查找数组中包含多个重复项的所有重复数字。因此,我们将使用基本的 Javascript 来解决这个问题。
理解问题
手头的问题是利用 JavaScript 查找数组中的重复数字。因此,我们将基本上提取在给定数组中出现不止一次的所有数字。作为响应,我们将得到重复数字的数组。例如,假设我们有一个数组 [1, 1, 4, 8, 2, 2, 6, 6, 6]。在这个数组中,重复项是 [1, 2, 6]。因此,这个数组将是函数的输出。
给定问题的逻辑
为了解决给定的问题,我们将使用一个对象来记录每个看到的数字的计数。因此,我们将遍历数组,对于每个项目,我们将验证条件:该项目是否已存在于对象中。如果它已经存在,我们将计数加 1。否则,我们将该项目添加到对象中,初始计数为 1。结果,我们从对象中获得了计数大于 1 的数字,这就是所需的重复数字数组。
算法
步骤 1:由于我们必须在给定数组中查找重复数字,因此为了解决这个问题,我们将定义一个函数并将其命名为 findDuplicates,在这个函数中,我们将传递一个参数数组。此数组将包含重复项。
步骤 2:创建上述函数后,我们将创建一个空的哈希映射或对象来存储重复数字计数。还要创建一个包含空值的数组。并将其命名为 duplicates,此数组将存储输入数组的重复数字。
步骤 3:现在我们位于函数内部,在该函数中我们已经定义了哈希映射来存储重复数字信息。之后,我们将迭代数组中的每个元素。然后检查该项目是否作为键存在于哈希映射中。
步骤 4:因此,如果在哈希映射中存在键,我们将计数加 1。否则,我们将该项目添加到哈希映射中,初始计数为 1。
步骤 5:在此步骤中,我们将使用另一个 for 循环来遍历哈希映射的键值对。
步骤 6:然后我们将检查条件:如果数字的计数大于 1,我们将将其添加到结果数组中。
示例
//Function to find the duplicate items
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;
}
//Usage of the function
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),因为在最坏情况下,计数映射可能包含所有不同的数字。
结论
因此,我们借助哈希映射或对象来记录计数,从而找到了包含多个数字的所有重复数字。借助该函数,我们可以轻松找出数组中的重复项并创建一个新的重复项集合。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP