力扣练习之最大子序和

我爱海鲸 2022-09-28 14:46:49 初级算法

简介初级算法、动态规划

原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xn3cg3/

解法一:

class Solution {
    public int maxSubArray(int[] nums) {
        int cur = nums[0];
        int max = cur;

        for (int i = 1 ; i < nums.length ; i++) {
            cur =  Math.max(cur,0) + nums[i];
            max = Math.max(max,cur);
        }

        return max;

    }
}

思路:动态规划

1,确定状态

2,找到转移公式

3,确定初始条件以及边界条件

4,计算结果。

这题是让求最大的连续子序和,如果不是连续的非常简单,只需要把所有的正数相加即可。但这里说的是连续的,中间可能掺杂负数,如果求出一个最大子序和在加上负数肯定要比原来小了。

遍历数组,每一次遍历的时候比较上一次记录的和,如和为负数,则重新在当前下标下重新计数,遍历结束后返回最后的结果即可。

你好:我的2025