《python算法与数据结构2000讲》0123. 买卖股票的最佳时机 III

本文介绍了《python算法与数据结构2000讲》中0123题的解决方案,该题要求在最多两次交易中找到股票买卖的最大利润。通过动态规划方法,分析了五种状态并给出状态转移方程,最后提供代码实现。
摘要由CSDN通过智能技术生成

《python算法与数据结构2000讲》0123. 买卖股票的最佳时机 III

  • 标签:数组、动态规划
  • 难度:困难

题目大意

给定一个数组 prices 代表一只股票,其中 prices[i] 代表这只股票第 i 天的价格。最多可完成两笔交易,且不同同时参与躲避交易(必须在再次购买前出售掉之前的股票)。

现在要求:计算所能获取的最大利润。

解题思路

动态规划求解。

最多可完成两笔交易意味着总共有三种情况:买卖一次,买卖两次,不买卖。

具体到每一天结束总共有 5 种状态:

  1. 未进行买卖状态;
  2. 第一次买入状态;
  3. 第一次卖出状态;
  4. 第二次买入状态;
  5. 第二次卖出状态。

所以我们可以定义状态 dp[i][j] ,表示为:第 i 天第 j 种情况(0 <= j <= 4)下

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT狂飙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值