查找数组中可以加和为目标值的数字(JavaScript)


在这个问题陈述中,我们需要借助 Javascript 功能找到数组中所有可以加和为给定目标值的数字。这项任务可以使用 Javascript 的一些内置函数来完成,或者我们可以使用多个 for 循环来解决。

给定问题的逻辑

问题指出,我们必须找出数组中可以将它们加起来得到与目标值完全相同的数字,并借助 Javascript 功能实现。

我们需要找到这些数字,并将它们加在一起得到等于目标值的和。为此,我们将初始化一个数组和一个目标值。然后,我们将遍历每个数组值,并再次遍历数组中其余的元素,以检查是否存在一对元素的和等于目标值。如果找到该对,则将其添加到新数组中。因此,最终我们将得到一个元素数组,这些元素的和将等于提到的目标值。

算法

步骤 1 - 在第一步,我们需要定义一个函数,该函数将找出数组中可以得到目标值所需和的数字。

步骤 2 - 现在我们将定义一个空数组,它将存储结果子数组的数字。

步骤 3 - 完成第二步后,我们将使用 for 循环迭代数组中的所有元素,直到数组的长度。push

步骤 4 - 现在我们使用另一个 for 循环或嵌套 for 循环来获取所需的两个元素。这两个元素的和应该等于目标值。

步骤 5 - 如果这两个元素的总和等于目标值,我们将将其添加到我们在步骤二中定义的数组中。

步骤 6 - 在下一步中,将数组和目标值传递给函数以执行并产生结果。

步骤 7 - 在最后一步,将数字数组和目标值传递给函数后,将输出结果到控制台。

算法代码

function possibleNums(array, targetValue) {
   const numbersArray = [];
   // nested loops to find the sum as target value
   for (let i = 0; i < array.length; i++) {
      for (let j = i + 1; j < array.length; j++) {
         if (array[i] + array[j] === targetValue) {
            numbersArray.push([array[i], array[j]]);
         }
      }
   }
   return numbersArray;
}
const array = [1, 2, 3, 4, 5, 6, 7];
const targetValue = 7;
const numbersArray = possibleNums(array, targetValue);
console.log(numbersArray);

复杂度

假设 n 是给定数组的长度,那么上述算法的时间复杂度为 O(n^2)。因为我们使用了两个嵌套的 for 循环来迭代并根据给定的问题获得所需的结果。

算法的空间复杂度由输入数组的大小和找到的总和为目标值的配对数量决定。如果 n 是数组项的数量,则 pairs 数组所需的空间与总和为目标值的配对数量成正比。因此,配对的数量将为 n/2。因此,整个空间复杂度将为 O(n)。

结论

在上面的代码中,我们使用了两个嵌套循环并创建了一个函数来根据给定的问题陈述获得所需的结果。基本上,我们必须比较两个元素的和以获得等于代码中提到的目标值的和。找到这些元素后,我们将这些元素推入新数组以显示输出。因此,执行这段代码需要 O(n^2) 的时间才能完成。存储结果所需的内存为 O(n)。

更新于:2023年5月18日

浏览量 1K+

开启你的职业生涯

完成课程获得认证

开始学习
广告