子数组的最大累加和[c++]

子数组的最大累加和问题

http://www.nowcoder.com/questionTerminal/554aa508dd5d4fefbf0f86e5fe953abd

看了几个答案感觉都有点小问题,稍微改了一下;
数组当前位置的值 = max(当前值,当前值+前一时刻的累加和);
得考虑第一个元素,可能第一个元素就是最大累加和;

int maxsumofSubarray(vector<int>& arr) {

    //m记录最大值;m初始化为数组第一个元素,且不能初始化为0。
    //因为可能数组元素全负,这样最大和必小于0;
    int m = arr[0];
    for(int i=1;i<arr.size();i++){
        arr[i]=max(arr[i],arr[i]+arr[i-1]);
        m = max(arr[i],m);
    }
    return m;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 13:46
点赞 评论 收藏
分享
07-02 22:46
门头沟学院 Java
码农索隆:hr:“管你投没投,先挂了再说”
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:47
机械打工仔:你自己匿名可以,这么好的公司就别给它匿名了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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