题解 | #连续子数组的最大和#

连续子数组的最大和

http://www.nowcoder.com/practice/459bd355da1549fa8a49e350bf3df484

思路

核心点在于理解到:若前面部分的和 < 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
    }
}
全部评论

相关推荐

ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务