JavaScript中数组的n个连续元素的最大和

我们需要编写一个JavaScript函数,该函数将一个数字数组(例如arr)作为第一个参数,将一个数字(num)作为第二个参数。

第二个参数将始终小于或等于数组的长度。我们的函数应该从总和中找到并返回数组中连续元素的数量。

例如-

如果输入是-

const arr = [2,5,3,4,6];
const num = 2

上述输入的输出应如下所示:

const output = 10

因为6和4是总和最大的两个连续元素。

我们可以在线性时间和恒定空间解决方案中使用滑动窗口技术解决此问题。

示例

以下是代码-

const arr = [2, 5, 3, 4, 6];
// 辅助函数查找数组的总和
const findSum = arr => arr.reduce((acc, val) => acc + val);
const maximumSum = (arr = [], num = 1) => {
   let left = 0, right = left + num;
   let sum = findSum(arr.slice(left, right));
   for(; right <= arr.length; right++, left++){
      sum = Math.max(findSum(arr.slice(left, right)), sum);
   };
   return sum;
};
console.log(maximumSum(arr, 2));
console.log(maximumSum(arr, 3));

输出结果

以下是控制台上的输出-

10
12