LeeCode 53. 最大子序和

Posted go大鸡腿

tags:

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

文章目录

题目

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

在这里插入图片描述

题解

动态规划

我们可以记录之前和,还有最大和,如果说之前的和<0,说明之前的总数太小了,剔除掉。

分类:

  1. 如果是一直变大的,比如[1,2,3],那么之前的和加上当前的数,最大和就是之前最大和跟当前和比较,取Math.max
  2. 如果是中间忽然变小,之前和小于0,比如[1,-2,-3],这时我们把之前和清零,然后现在的和变成当前的数,方便后续判断,这时最大和就是之前最大和跟当前的数比,如果现在的数都比之前的和大,那么剔除掉。

代码

class Solution {
    public int maxSubArray(int[] nums) {
        if(nums.length == 1){
            return nums[0];
        }
        int max = nums[0];
        int firstSum = 0;
        for(int a:nums){
            if(firstSum<0){
                firstSum = a;
                max = Math.max(max,a);
            }else{
                firstSum = firstSum+a;
                max = Math.max(max,firstSum);
            }
            
        }
        return max;
    }
}

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

C++ LeeCode 最大子序和

java刷题--53最大子序和

LeetCode53. 最大子序和

53.最大子序和

贪心——力扣53.最大子序和&&力扣122.买卖股票的最佳时机Ⅱ

1.(53)最大子序和