美文网首页LeetCode 之路
剑指 Offer——连续子数组的最大和

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

作者: seniusen | 来源:发表于2019-04-10 14:10 被阅读0次

    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」!

    相关文章

      网友评论

        本文标题:剑指 Offer——连续子数组的最大和

        本文链接:https://www.haomeiwen.com/subject/piuniqtx.html