码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode53. 最大子序和

时间:2020-06-26 20:25:08      阅读:40      评论:0      收藏:0      [点我收藏+]

标签:res   etc   return   一个   +=   alt   lazy   最大值   turn   

技术图片
要求一个最大子序和,思路是:假设每个以第i个元素结尾的子数组的最大值为f(i),那么我们要求的最大子序和就是遍历所有的i,
得到以i结尾的最大的f(i), 显然f(i) = max{f(i - 1), nums[i]},也就是说以第i个元素结尾的子数组的最大值为
以第i-1元素结尾的子数组的最大值加上nums[i] 与 nums[i]中的较大值。
因此可以写出代码:

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int res = nums[0], sum = 0;
        for(auto num : nums) {
            if(sum >= 0) {
                sum += num;
            } else {
                sum = num;
            }
            res = max(res, sum);
        }
        return res;
    }
};

LeetCode53. 最大子序和

标签:res   etc   return   一个   +=   alt   lazy   最大值   turn   

原文地址:https://www.cnblogs.com/linrj/p/13195967.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!