思路:动态规划
遍历数组,遇到负的和则放弃之前的结果,重新积累,这期间保留最大值
用max记录最终返回的最大和,用curmax记录累加值
对于数值中一个数arr[i],若其左边的累加和非负,那么加上arr[i]
判断此时的curmax是否大于max,若大于此时的max,则用max记录下来
function FindGreateSum(arr){
var len=arr.length;
var curmax=0;
var max=0;
var start=0;
var end=0;
//数组中正负数都有
for(var i=0;i<len;i++){
curmax+=arr[i];
if(curmax<0){
curmax=0;
}
if(curmax>max){
max=curmax;
}
}
if(start>=end){
start--;
}
return max;
}
var arr=[2,4,-7,5,2,-1,2,-4]
console.log(FindGreateSum(arr));