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

连续子数组的最大和

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

解题思路:

  1. 当前位置的元素是否要和前面连接起来,取决于前一个位置的连续最大值。
  2. 如果前面位置的连续最大值已经小于0了,那么没有必要再和它连在一起了,自己重新开始一个序列即可。

代码实现:

public class Solution {
    public int FindGreatestSumOfSubArray(int[] array) {
        int[] dp = new int[array.length];
        //1.初始值
        dp[0] = array[0];
        //2.转移方程 dp[i] = Math.max(dp[i-1], 0) + array[i];
        int max = dp[0];
        for(int i=1; i<array.length; i++){
            dp[i] = Math.max(dp[i-1], 0) + array[i];
            max = Math.max(max, dp[i]);
        }
        return max;
    }
}


全部评论

相关推荐

06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
后来123321:别着急,我学院本大二,投了1100份,两个面试,其中一个还是我去线下招聘会投的简历,有时候这东西也得看运气
无实习如何秋招上岸
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 17:58
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务