7.2 MaxSliceSum

来源:互联网 发布:rstudio数据恢复官网 编辑:程序博客网 时间:2024/06/10 06:24

求连续最大和子数组。与例子中不同的是,如果和为负返回最大的数而不是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;    }}
0 0