求连续最大和子数组。与例子中不同的是,如果和为负返回最大的数而不是0.
Solutution
当maxCur+A[i]<0时,maxCur不能设置为0,因为如果所有值都小于0,得到错误结果。在之前程序的基础上,增加分段最大值为负的判断。
class Solution {
public int solution(int[] A) {
int maxSum = Integer.MIN_VALUE;
int maxCur = Integer.MIN_VALUE;
for(int i=0; i<A.length; i++){
if(maxCur < 0){
maxCur = Math.max(A[i],maxCur);
}
else{
if(maxCur+A[i]>0){
maxCur += A[i];
}
else{
maxCur = A[i];
}
}
if(maxCur>maxSum){
maxSum = maxCur;
}
}
return maxSum;
}
}