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

连续子数组的最大和

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

dp[i]代表以array[i]为结尾的序列的最大和,dp[0] = array[0]; dp[i+1] = dp[i] > 0? dp[i] + array[i+1] : array[i+1]。

可以只用一个变量代替数组,即sum = 0; sum = sum > 0 ? sum + array[i] : array[i],过程中记录sum的最大值。

class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        int ans = 0x80000000, sum = 0, len = array.size();
        for (int i = 0; i < len; ++i){
            if (sum <= 0) sum = array[i];
            else sum += array[i];
            if (sum > ans) ans = sum;
        }
        return ans;
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
04-03 22:41
兰州大学 C++
老六f:有时候是HR发错了,我之前投的百度的后端开发,他给我发的算法工程师,但是确实面的就是百度开发
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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