LeetCode 53. 最大子序和

Posted Zoey

tags:

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

最大子序列和

题目大意:

给一个数组,求出最大子序列和(连续数的和最大)

例子

输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。




1、动态规划

如果按动态规划的做法,我们已知的条件:

  1. 前 n-1 个数最大的子序列和 ans
  2. num[n] 的值


我们还差一个条件:包括num[n-1]的连续值的最大值 sum

样例中前缀和(sum)的值

前缀和小于0则默认为0,最后面的值不会有任何帮助

0 0 0 4 -3 5 6 1 5



最终 ans = max(ans, sum + num[i]);

代码

复杂度:O(n)

class Solution {
    public int maxSubArray(int[] nums) {
        int len = nums.length;
        int sum = 0;  // 前缀和
        int ans = nums[0];  //最大值
        for(int i = 0; i < len; i++) {
            ans = Math.max(ans, sum + nums[i]);
            sum = sum + nums[i];
            if(sum < 0) sum = 0; 
        }
        return ans;
    }
}










以上是关于LeetCode 53. 最大子序和的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 53. 最大子序和

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

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

LeetCode-53-最大子序和

LeetCode-53-最大子序和

LeetCode 第53题,最大子序和