JavaScript 存在于数组中的和为特定目标数字的一对

JavaScript 存在于数组中的和为特定目标数字的一对

本文将介绍如何在数组中找到一对项,其和等于特定目标数字。因此,我们将使用JavaScript实现算法。

理解问题

我们的问题是找到数组中和为给定目标值的一对数字。目标值也应该在数组中存在。也可以说我们必须识别出满足条件a + b = c,其中c也存在于数组中的一对(a, b)。

解决问题的逻辑

为了解决这个问题,我们将使用哈希集合来存储数组的项。我们需要遍历数组中的项,并检查当前项与其他项的差是否存在于哈希集合中。如果满足条件,则说明找到了和存在于数组中的一对。

步骤

步骤1 :因为我们需要找出一对项的和等于给定目标值,并且目标值也应该存在于数组中。所以我们需要创建一个函数。在这个函数中,我们将传递一个数组作为参数arr。

步骤2 :在创建函数之后,我们需要初始化一个空的哈希集合来存储结果数组。

步骤3 :现在我们有一个函数和一个变量来存储结果。在此之后,我们将使用循环来遍历给定数组中的每一项。

步骤4 :在这个循环中,我们将检查条件,即如果num与其他元素之间的差存在于哈希集合中。如果差存在于集合中,则将该对添加到结果变量中。

步骤5 :在上述步骤之后,我们将num添加到哈希集合中并返回结果。结果将包含和存在于给定数组中的一对。

示例

// Function for finding pairs with the sum
function findPairsWithSumExists(arr) {
   const hashSet = new Set();
   const result = [];

   for (let i = 0; i < arr.length; i++) {
      const num = arr[i];

      for (let j = 0; j < arr.length; j++) {
         if (j === i) continue; // Skip the same element

         const diff = num - arr[j];
         if (hashSet.has(diff)) {
            result.push([num, arr[j]]);
         }
      }

      hashSet.add(num);
   }

   return result;
}

const arr = [1, 2, 3, 4, 5];
const pairs = findPairsWithSumExists(arr);
console.log(pairs);

输出

[
   [ 2, 1 ], [ 3, 1 ],
   [ 3, 2 ], [ 4, 1 ],
   [ 4, 2 ], [ 4, 3 ],
   [ 5, 1 ], [ 5, 2 ],
   [ 5, 3 ], [ 5, 4 ]
]

复杂度

找到两个数字的和等于给定目标的时间复杂度为O(n^2),其中n是给定数组的大小。该复杂度的原因是我们用了一个嵌套循环来迭代数组。代码的空间复杂度为O(n),因为我们使用了一个哈希集合来存储结果。

结论

我们已经根据给定问题编写了查找配对的代码。通过使用哈希集合来存储数组的项,我们可以有效地找出数组中存在的数字配对的和。该算法的时间复杂度为二次,空间复杂度为线性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程