给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
let re = nums[0]
let sum = 0
nums.forEach(num => {
if (sum > 0) {
// 在当前和已经是正数的情况下,继续往上加,可能会使其变大
sum += num
} else {
// 在当前和不是正数时,直接舍弃前面的和,能最大化结果
sum = num
}
re = Math.max(sum, re)
})
return re
};