LeetCode53. 最大子序和

Posted machine_gun_lin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode53. 最大子序和相关的知识,希望对你有一定的参考价值。


要求一个最大子序和,思路是:假设每个以第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. 最大子序和的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 53. 最大子序和

leetcode 每日一题 53. 最大子序和

leetcode 每日一题 53. 最大子序和

LeetCode-53-最大子序和

LeetCode-53-最大子序和

LeetCode 第53题,最大子序和