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

连续子数组的最大和

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

归为简单题是有道理的,算是一个最简单的的动态规划问题。
问题的关键是最大子数组和的问题拆解,可以拆解为以数组任意位置结尾的子数组的最大和。
以当前位置的结尾的子数组最大和跟前一个位置结尾的子数组的最大和的关系是:
1.连接前一个位置:
dp[i-1]+array[i]
2.不连接前一个位置
array[i]
求最大值作为以当前位置结尾的最大值。

class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        if(array.size() == 0){
            return 0;
        }
        vector<int> dp = {array[0]};
        int res = array[0];
        for(int i=1;i<array.size();i++){
            dp[i] = max(dp[i-1]+array[i],array[i]);
            res = max(res,dp[i]);
        }
        
        return res;
    }
};


全部评论

相关推荐

09-18 20:41
门头沟学院 Java
要个offer怎么这...:哈哈哈哈哈哈,我也拿了0x10000000个offer,秋招温啦啦啦,好开心
我的秋招日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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