求解最大子例和
*给出数据,求解最大子例和,有多种方式,
1.暴力求解,时间复杂度O(n^3),
2. 分治法,时间复杂度O(nlogn)
2.在线处理 时间复杂度O(n)_
在线处理原理分析
根据数据,从第零位开始相加,若数值大于sumMax,将sumMax赋值为最大值,若thisSum小于0,则将thisSum设为0(清空前面累加和),继续遍历数组
sumMax = 0 => sumMax = 3 => sumMax = 5 => sumMax => 7
let arr = [-1, 3, -2, 4, -6, 1, 6, -1];
let maxSum = (arr) => {
let thisSum = 0;
let sumMax = 0;
for(let i = 0; i< arr.length; i++){
thisSum += arr[i];
if(thisSum > sumMax){
sumMax = thisSum;
}else if(thisSum < 0){
thisSum = 0;
}
}
console.log("最大和为:" + sumMax);
return sumMax;
}