找到具有最大和的子数组


我们需要编写一个接受数字数组的 JavaScript 函数。该数字数组既包含正数,也包含负数。

我们的函数的目的是从该数组中找到一个子数组(任意长度),将它的元素相加得到的最大和。然后,该函数应返回该子数组的元素和。

例如:-

如果输入数组为:-

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

则输出应为:

const output = 6

因为 [4,-1,2,1] 的和最大,为 6。

示例

const arr = [-2,1,-3,4,-1,2,1,-5,4];
const maxSubArray = (arr = []) => {
   let sum = arr[0], max = arr[0];
   for (let i = 1; i < arr.length; ++i){
      sum = Math.max(sum + arr[i], arr[i]), max = Math.max(max, sum);
   };
   return max;
};
console.log(maxSubArray(arr));

输出

在控制台中的输出为:

6

更新于: 23-11-2020

487 次浏览

开启您的职业生涯

完成课程后获得认证

开始吧
广告