7.19 第一次做,无法 AC
7.20 一次 AC

题目描述


原题链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/

解题思路


K 神题解:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/solution/

7.20 感悟:

  • 这题的核心其实就是算出每一个 nums[i] 的最大值是多少。

  • 意味着不代表你连续的数字多你数就大。

  • 反正核心就是把 nums[i] 最大值求出来就行了,也不用担心后面的状态会比前面的状态小,既然小那就用前面的状态不就行了?

    1. class Solution {
    2. public int maxSubArray(int[] nums) {
    3. int res = nums[0];
    4. for(int i = 1; i < nums.length; i++) {
    5. nums[i] += Math.max(nums[i - 1], 0); // nums[i] 其实就是状态 dp[i]
    6. res = Math.max(res, nums[i]); // 因为要得出最大值,所以每一次都要比较一下
    7. }
    8. return res;
    9. }
    10. }