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

连续子数组的最大和

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

public static int FindGreatestSumOfSubArray(int[] array) {
        //取第一个为初始最大值
        int nowMax = array[0];
        int nowCount = array[0];
        //从第二个开始计算
        for (int i = 1; i < array.length; i++) {
            int val = array[i];
            //如果碰到负数,说明,当前值nowCount会变小,
            // 则记录当前的nowCount是否最大值
            if (val < 0 && nowCount > nowMax) {
                nowMax = nowCount;
            }
            nowCount += val;
            //如果加完之后,居然比没加之前要小,
            // 说明val更大,放弃之前的结果,从val开始重新计算
            if (nowCount < val) {
                nowCount = val;
            }
        }
        //对最终结果进行比较
        if (nowCount > nowMax) {
            nowMax = nowCount;
        }
        return nowMax;
    }
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务