当前位置: 首页 > news >正文

代码随想录算法训练营第四十五天| 动态规划08

121. 买卖股票的最佳时机

视频讲解:动态规划之 LeetCode:121.买卖股票的最佳时机1_哔哩哔哩_bilibili

代码随想录

dp[i][0]表示的是截至第i天股票的最小值,取负数

dp[i][1]表示的是截至第i天股票的最大利润

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        length=len(prices)
        if length==0:
            return 0
        dp=[[0]*2 for _ in range(length)]
        dp[0][0]=-prices[0]
        dp[0][1]=0
        for i in range(1,length):
            dp[i][0]=max(dp[i-1][0],-prices[i])
            dp[i][1]=max(dp[i-1][1],prices[i]+dp[i-1][0])
        return dp[-1][1]

122.买卖股票的最佳时机II

视频讲解:动态规划,股票问题第二弹 | LeetCode:122.买卖股票的最佳时机II_哔哩哔哩_bilibili

代码随想录

不需要二维数组,一维就可以解决

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        dp=[0]*len(prices)
        for i in range(1,len(prices)):
            dp[i]=max(dp[i-1],dp[i-1]+prices[i]-prices[i-1])
        return dp[-1]

123.买卖股票的最佳时机III

这道题一下子就难度上来了,关键在于至多买卖两次,这意味着可以买卖一次,可以买卖两次,也可以不买卖。

视频讲解:动态规划,股票至多买卖两次,怎么求? | LeetCode:123.买卖股票最佳时机III_哔哩哔哩_bilibili

代码随想录

dp[i][j]中 i表示第i天,j为 [0 - 4] 五个状态,dp[i][j]表示第i天状态j所剩最大现金

一天一共就有五个状态,

  1. 没有操作
  2. 第一次持有股票
  3. 第一次不持有股票
  4. 第二次持有股票
  5. 第二次不持有股票
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        if len(prices)==0:
            return 0
        dp=[[0]*5 for _ in range(len(prices))]
        dp[0][1]=-prices[0]
        dp[0][3]=-prices[0]
        for i in range(1,len(prices)):
            dp[i][0]=dp[i-1][0]
            dp[i][1]=max(dp[i-1][1],dp[i-1][0]-prices[i])
            dp[i][2]=max(dp[i-1][2],dp[i-1][1]+prices[i])
            dp[i][3]=max(dp[i-1][3],dp[i-1][2]-prices[i])
            dp[i][4]=max(dp[i-1][4],dp[i-1][3]+prices[i])
        return dp[-1][4]

相关文章:

  • 大模型产品Deepseek(八)、数据嵌入+知识库管理+联网搜索,实现精准的知识查询
  • 为什么 MySQL 选择使用 B+ 树作为索引结构?MySQL 索引的最左前缀匹配原则是什么?MySQL 三层 B+ 树能存多少数据?
  • [OD E 100] 生成哈夫曼树
  • Java 字符串
  • 51c大模型~合集69
  • 最新版本Exoplayer扩展FFmpeg音频软解码保姆级教程
  • 简单易懂,解析Go语言中的Map
  • Unity 适用于单机游戏的红点系统(前缀树 | 数据结构 | 设计模式 | 算法 | 含源码)
  • postman调用ollama的api
  • REACT学习DAY02(恨连接不上服务器)
  • 垃圾回收知识点
  • 3.12 企业级智能文档引擎:从技术手册到产品报告的全链路自动化实践指南
  • 超简单理解KMP算法(最长公共前后缀next数组、合并主子串、子串偏移法)
  • QT 引入Quazip和Zlib源码工程到项目中,无需编译成库,跨平台,压缩进度
  • Minio分布式多节点多驱动器集群部署
  • 如何使用Python快速开发一个带管理系统界面的网站-解析方案
  • 基于Python+Django+Vue的旅游景区推荐系统系统设计与实现源代码+数据库+使用说明
  • 游戏引擎学习第111天
  • Unity结合Vuforia虚拟按键实现AR机械仿真动画效果
  • ArcGIS Pro进行坡度与坡向分析
  • 女子应聘文员被说“太丑”?官方回应:有关部门启动核查处置
  • 四大皆空!赛季还没结束,曼城已经吃上“散伙饭”了
  • 哪条线路客流最大?哪个站点早高峰人最多?上海地铁一季度客流报告出炉
  • 以军称已开始在加沙的新一轮大规模攻势
  • 我国城市规划“全面体检”套餐出台,城市体检将逐步与供地计划等挂钩
  • 蒋圣龙突遭伤病出战世预赛存疑,国足生死战后防线严重减员