《python算法与数据结构2000讲》0123. 买卖股票的最佳时机 III
- 标签:数组、动态规划
- 难度:困难
题目大意
给定一个数组 prices
代表一只股票,其中 prices[i]
代表这只股票第 i
天的价格。最多可完成两笔交易,且不同同时参与躲避交易(必须在再次购买前出售掉之前的股票)。
现在要求:计算所能获取的最大利润。
解题思路
动态规划求解。
最多可完成两笔交易意味着总共有三种情况:买卖一次,买卖两次,不买卖。
具体到每一天结束总共有 5 种状态:
- 未进行买卖状态;
- 第一次买入状态;
- 第一次卖出状态;
- 第二次买入状态;
- 第二次卖出状态。
所以我们可以定义状态 dp[i][j]
,表示为:第 i
天第 j
种情况(0 <= j <= 4
)下