刷题记录-剑指offer42:连续子数组的最大和

给一个数组,返回它的最大连续子序列的和

如果某个序列的和小于0,那个这个序列肯定是拖后腿的,不应该被包含进去,直接从数组里的下一位开始看

public class Solution {
    public int FindGreatestSumOfSubArray(int[] array) {
        if(array == null || array.length == 0)
            return 0;
        int accSum = 0;
        int maxSum = Integer.MIN_VALUE;      // 这里的初始化不能用0,因为如果数组里所有元素都小于0,会产生错误答案
        for(int num : array){
            accSum += num;
            maxSum = Math.max(accSum, maxSum);
            if(accSum<0){
                accSum = 0;
            }
        }
        return maxSum;
    }
}

 

posted @ 2020-06-09 19:07  嫩西瓜  阅读(128)  评论(0)    收藏  举报