JavaScript 中数组中存在其和的对
在本文中,我们将了解如何在数组中找到一对总和等于特定目标数字的项目。因此,我们将使用 JavaScript 来实现该算法。
理解问题
当前的问题是在数组中找到一对数字,其总和等于给定的目标值。并且目标值也应该在数组中。或者我们可以说,我们必须识别对 (a, b),其中 a + b = c 并且 c 也存在于数组中。
给定问题的逻辑
为了解决这个问题,我们将使用哈希集来存储数组的项目。因此,我们需要遍历数组中的项目,并检查条件,即当前项目与任何其他项目之间的差异是否存在于哈希集中。如果条件满足,那么我们就找到了和存在于数组中的对。
算法
步骤 1:因为我们必须找出和等于给定目标值的一对项目,并且目标值也应该存在于数组中。因此,为了完成这项任务,我们将创建一个函数。在此函数中,我们将传递数组的参数作为 arr。
步骤 2:创建函数后,我们需要初始化一个空白哈希集来存储结果对数组。
步骤 3:现在我们有一个函数和一个变量来存储结果。此后,我们将使用循环遍历给定数组中的每个项目。
步骤 4:在此循环中,我们将检查条件,看看 num 和任何其他元素之间的差异是否存在于哈希集中。因此,如果集合中存在差异,则将对添加到结果变量中。
步骤 5:完成上述步骤后,我们将 num 添加到哈希集并返回结果。结果将包含总和存在于给定数组中的对。
示例
// 用于查找总和对的函数
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),因为我们使用了哈希集来存储结果。
结论
正如我们根据给定问题生成查找对的代码一样。通过使用哈希集来存储数组项,我们可以有效地找到和存在于数组中的数字对。并且该算法具有二次时间复杂度和线性空间复杂度。
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

