在数组中查找可能的数字,这些数字的总和可以达到目标值 JavaScript

javascriptweb developmentfront end technology

在此问题陈述中,我们需要借助 Javascript 函数,在数组中找到所有可能的数字,这些数字的总和可以达到给定的目标值。此任务可以借助一些 Javascript 内置函数完成,也可以通过多个 for 循环解决。

给定问题的逻辑

问题指出,我们必须获取数组中的可能数字,这些数字可以通过借助 Javascript 函数将它们相加,从而给出作为目标值的精确值。

因为我们必须找出数字,并将它们相加,我们应该得到等于目标值的总和。为了执行此操作,我们将初始化一个数组和一个目标值。然后,我们将循环遍历每个数组值,并再次循环遍历数组中的其他剩余元素,以检查是否存在一对相加可获得目标值的元素。如果找到该对,则将其添加到新数组中。所以最后我们会得到一个元素数组,元素的总和将等于提到的目标值。

算法

步骤 1 - 在第一步,我们需要定义一个函数,该函数将找出数组的可能数量,以获得所需的总和作为目标值。

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

步骤 3 - 在第二步之后,我们将使用 for 循环遍历数组的所有元素,直到达到数组的长度。push

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

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

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

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

算法代码

function possibleNums(array, targetValue) {
   const numbersArray = [];
   // 嵌套循环查找总和作为目标值
   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 是数组项的数量,则对数组所需的空间与总计等于目标值的对的数量成正比。因此,对的数量将为 n/2。因此,整个空间复杂度将为 O(n)。

结论

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


相关文章