输入一个整型数组,子数组为这个数组中连续的一个或者多个整数组成的数组。求所有子数组中的和的最大值。要求时间复杂度为O(n)。例如,输入数组为[1, -3, 9, 10, -2, 3, -6, 5]。和最大的子数组为 [9, 10, -2, 3],因此输出为该子数组的和20。
function contMax(array) {
if (array.length == 0)
return 0
var sum = array[0] //保存每组的和
var maxSum = array[0] //连续子数组最大和
for (var i = 1; i < array.length; i++) {
sum = Math.max(sum + array[i], array[i]);
maxSum = Math.max(sum, maxSum)
}
return maxSum
}
console.log(contMax([1, -3, 9, 10, -2, 3, -6, 5])) //20