最大和子数组问题在于找到数组或整数列表中连续子序列的最大和:
例如:
maxSequence([-2, 1, -3, 4, -1, 2, 1, -5, 4])
// should be 6: [4, -1, 2, 1]
简单的情况是列表仅由正数组成并且最大和是整个数组的总和。
如果列表仅由负数组成,则返回 0。
空列表被认为具有零最大和。请注意,空列表或数组也是有效的子列表/子数组。
var maxSequence = function(arr){
var len = arr.length;
var maxSum = [];
if(len == 0 || Math.max.apply(null, arr) < 0){
return 0;
};
for(var step = 1; step < len + 1; step+=1){
for(var i in arr){
if(Number(i) + step < len+1){
maxSum.push(arr.slice(Number(i), Number(i) + step).reduce((x,y)=>x+y));
}
}
};
var result = Math.max.apply(null, maxSum);
return result;
}