Leetcode-53 最大子序和

作者: itbird01 | 来源:发表于2021-09-10 19:09 被阅读0次

53. 最大子序和

解题思路

1.最简单的解法
双层for循环,有一个用于标记、一个用于循环,做加法,然后判断与临时变量sum的大小
2.第二种解法(DP)
去除一层for循环,推导出状态转移方程,f(i)=max{f(i−1)+nums[i],nums[i]}

解题遇到的问题

1.第一种解法,以时间换空间,时间复杂度为O(n^2),空间复杂度O(1)
2.第二种解法,时间复杂度为O(n),空间复杂度O(1)

后续需要总结学习的知识点

1.动态规划思想、状态转移方程如何推导

##解法1
class Solution {
   public static int maxSubArray(int[] nums) {
        if (nums.length == 1) {
            return nums[0];
        }

        int sum = nums[0];
        for (int i = 0; i < nums.length; i++) {
            int a = 0;
            for (int j = i; j < nums.length; j++) {
                a += nums[j];
                if (a > sum) {
                    sum = a;
                }
            }
        }
        return sum;
    }
}

##解法2
class Solution {
    public static int maxSubArray(int[] nums) {
        int sum = nums[0];
        int pre = 0;
        for (int i = 0; i < nums.length; i++) {
            pre = Math.max(nums[i], pre + nums[i]);
            sum = Math.max(pre, sum);
        }
        return sum;
    }
}

相关文章

  • LeetCode-53 最大子序和

    动态规划 分治 题目 https://leetcode-cn.com/problems/maximum-subar...

  • Leetcode-53 最大子序和

    53. 最大子序和[https://leetcode-cn.com/problems/maximum-subarr...

  • 【简单】Leetcode-53 最大子序和

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

  • 最长连续子序和问题

    0X00 算法总结 最大子序和 53. 最大子序和 这是一道非常经典的 dp 问题, 以最大子序和的最后一个数字来...

  • leetcode-53 最大子序和 python3 贪心解法

    解题思路:记录当前元素nums[i],当前序列的最大值result_temp,总的最大值result1.如果元素全...

  • 【5月】LeetCode:我怎么还是这么菜

    5.3 题目链接 53. 最大子序和 很喜欢的解法(DP) 官方解(分治) 参考题解:最大子序和 但是仔细观察「方...

  • 动态规划1

    53. 最大子序和 70, 爬楼梯

  • [Leetcode] 53. 最大子序和

    53. 最大子序和 来源: 53. 最大子序和 1. 题目描述 给定一个整数数组 nums ,找到一个具有最大和...

  • 最大子序和

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

  • 最大子序和

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

网友评论

    本文标题:Leetcode-53 最大子序和

    本文链接:https://www.haomeiwen.com/subject/qvlpwltx.html