53.最大子数组和

53. 最大子数组和

参考:(31条消息) LeetCode.53 最大子序和(python解法)_双皮奶呀的博客-CSDN博客

经典动态规划问题(理解「无后效性」) - 最大子数组和 - 力扣(LeetCode) (leetcode-cn.com)

 

动态规划

动态规划思想:通过解决一个一个简单的问题,进而把简单的问题的解组成了复杂问题的解。

动态规划的解题步骤:

        定义状态(定义子问题)、状态转移方程、初始化、输出、是否可以空间优化

本题的重点在于:

       1.理解题意 

       2.如何定义子问题(如何定义状态)

关键1:理解题意

      找出和最大的连续子数组的值,连续是关键

关键2:如何定义子问题(如何定义状态)

设计状态思路:把不确定 的因素确定下来,进而把子问题定义清楚,把子问题定义得简单。动态规划的思想通过解决一个一个简单的问题,进而把简单的问题的解组成了复杂问题的解。

我们不确定和最大的连续子数组一定会选那一个数,那么我们可以求出所有经过输入数组的某一个数的连续子数组的最大和。

例如:实例1输入数组是[-2,1,-3,4,-1,2,1,-5,4],我们可以求出以下子问题:

  • 子问题1:经过-2的连续子数组的最大和是多少
  • 子问题2:经过1的连续子数组的最大和是多少
  • 子问题3:经过-3的连续子数组的最大和是多少
  • 子问题4:经过4的连续子数组的最大和是多少
  • 子问题5:经过-1的连续子数组的最大和是多少
  • 子问题6:经过2的连续子数组的最大和是多少
  • 子问题7:经过1的连续子数组的最大和是多少
  • 子问题8:经过-5的连续子数组的最大和是多少
  • 子问题9:经过4的连续子数组的最大个是多少

例如子问题3:我们不确定的是:-3是连续子数组的第几个元素。那我们就把-3定义成连续子数组的最后一个元素。

在新的定义下,我们列出子问题如下:

  1. 以-2结尾的连续子数组的最大和是多少
  2. 以1结尾的连续子数组的最大和是多少
  3. 以-3结尾的连续子数组的最大和是多少
  4. 以4结尾的连续子数组的最大和是多少

........

加上了【结尾】之后,各个子问题之间就有了关联,标号为i的子问题的结果是<=0,那么编号为i+1的子问题就可以把编号为i的子问题的结果舍弃掉

 

posted @   sqxiong  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示