思路

核心点在于理解到:若前面部分的和 < 0,说明前面的部分对于计算总和这件事来说只会拖后腿,那么便舍弃掉,将计算当前sum的起点重设为0。但同时要一直更新当前的最大和值

代码

public class Solution {
    public int FindGreatestSumOfSubArray(int[] array) {
        int maxSum = Integer.MIN_VALUE; // 因为有负数,所以不能设为0
        int curSum = 0;
        for(int i = 0;i < array.length;i++){
            curSum += array[i];
            maxSum = Math.max(maxSum,sum);
            if(curSum < 0) curSum= 0;
        }
        return maxSum; // 核心!!若小于0,则计算和的起点重新置为0
    }
}