先来看题目:
解题思路:
采用动态规划的方法进行求解,首先我们可以知道如果数组中全是非负数那么只需要找出最大的那一个非负数就好;如果其中掺杂着正数,那么就可以将正数加起来之后返回最大的数;如果sum<0的话就可以进行相关省略,这里用到了动态规划,也就是将困难问题拆解成简单问题;
话不多说,上代码:
var maxSubArray = function(nums){
let ans = nums[0]
let sum = 0
for(const num of nums){
if(sum > 0){
sum += num
} else {
sum = num
}
ans = Math.max(ans,sum)
}
return ans
}
console.log(maxSubArray([-2,3,-1,1,-3,-2]));
执行效果: