剑指 Offer——连续子数组的最大和

1. 题目

2. 解答

初始化 sum=0,然后遍历数组进行累加。如果 sum 变为负数,也就说再继续累加的话贡献为负,我们需要更新 sum=0,重新开始累加。

初始化 max_sum 为数组的第一个元素,之所以不初始化为零,就是防止出现数组中全为负数的情况,比如 [-2, -1, -3, -4, -5]。在遍历数组的过程中,如果 sum > max_sum,就更新 max_sum=sum,最后 max_sum 即为所求。

class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {

        int n = array.size();
        int sum = 0;
        int max_sum = array[0];

        for (int i = 0; i < n; i++)
        {
            sum += array[i];
            if (sum > max_sum)    max_sum = sum;
            if (sum < 0)    sum = 0;
        }

        return max_sum;
    }
};

获取更多精彩,请关注「seniusen」!

全部评论

相关推荐

程序员花海_:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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