JavaScript 总子数组和为 K

javascriptweb developmentfront end technologyobject oriented programming更新于 2024/12/9 9:48:17

在此问题陈述中,我们的任务是借助 Javascript 编写获取总和为 K 的子数组的函数。因此,为了完成此任务,我们将使用 Javascript 的基本功能。

理解问题陈述

问题陈述是创建一个函数,该函数将接受一个整数数组和一个目标和 K。因此,在处理计算后,它将返回数组中总和为 K 的子数组总数。子数组可以定义为数组中的一系列连续项。例如,假设我们有给定的数组 [1, 2, 3, 4, 5],K 为 3,因此有两个子数组,其和为 3,即 [1, 2] 和 [3]。

上述问题的逻辑

为了解决给定的问题,我们可以使用循环遍历数组的项目,并且我们将跟踪到给定点为止的元素和。因此,我们可以使用 for 循环来存储总和及其频率。我们将检查当前总和是否等于 K 的值。如果这是真的,则将计数值增加。处理完数组的所有项后,我们将得到和为 K 的子数组的总数。

算法

步骤 1:因为我们必须找到和为 K 的子数组的总数,所以为了完成这项任务,我们将定义一个名为 subarraysWithSumK 的函数。并在此函数中使用两个参数 arr 和 K。

步骤 2:定义上述函数后,在函数主体中,我们将定义一个名为 count 的变量,并从零值开始此变量。

步骤 3:因此,借助循环,我们将迭代给定的数组以获取数组中项目的总和。

步骤 4:然后,我们将定义一个变量,并将其命名为 sum,并将其值从零开始。

步骤 5:之后,我们将使用另一个循环遍历上述循环的项目。在此循环中,我们将对每个项目求和并将其存储在 sum 变量中。

步骤 6:然后,我们将检查 sum 的值是否等于 K 的值,然后将 count 值增加 1。

示例

function subarraysWithSumK(arr, K) {
   let count = 0;
   for (let i = 0; i < arr.length; i++) {
      let sum = 0;
      for (let j = i; j < arr.length; j++) {
         sum += arr[j];
         if (sum === K) {
            count++;
         }
      }
   }
    return count;
}
 
const arr = [1, 2, 3, 4, 5];
const K = 6;
console.log(subarraysWithSumK(arr, K));

输出

1

复杂度

查找和为 K 的子数组总数的算法需要 O(n) 时间,其中 n 是数组中的项数。此代码使用恒定的时间来处理数组中的每个项。程序的空间复杂度为 O(1)。

结论

这就是我们解决上述问题陈述的方法。我们已经实现了一个代码来获取和为 K 的子数组的数量。它跟踪数组项并检查和是否等于 K。


相关文章


有用资源