JavaScript中子数组的最大连续和

我们需要编写一个JavaScript函数,该函数接受一个由正整数和负整数组成的数组。由于数组还包含负元素,因此连续元素的总和可能为负也可以为正。

我们的函数应该从总和最大的数组中选择一个连续的元素数组。最后,该函数应返回该数组。

例如-

如果输入数组是-

const arr = [-2, -3, 4, -1, -2, 1, 5, -3];

那么最大可能的和是7并且输出子数组应该是-

const output = [4, -1, -2, 1, 5];

示例

以下是代码-

const arr = [-2, -3, 4, -1, -2, 1, 5, -3];

const maximumSubarray = (arr = []) => {

   let max = -Infinity;

   let currentSum = 0;

   let maxStartIndex = 0;

   let maxEndIndex = arr.length - 1;

   let currentStartIndex = 0;

   arr.forEach((currentNumber, currentIndex) => {

      currentSum += currentNumber;

      if (max < currentSum) {

         max = currentSum;

         maxStartIndex = currentStartIndex;

         maxEndIndex = currentIndex;

      }

      if (currentSum < 0) {

         currentSum = 0;

         currentStartIndex = currentIndex + 1;

      }

   });

   return arr.slice(maxStartIndex, maxEndIndex + 1);

};

console.log(maximumSubarray(arr));

输出结果

以下是控制台上的输出-

[ 4, -1, -2, 1, 5 ]

以上是 JavaScript中子数组的最大连续和 的全部内容, 来源链接: utcz.com/z/334644.html

回到顶部