如果完全掌握了前面几个题,这个题也是简单的。咱们只需要定义一个新状态冷冻期,并和买入、卖出两种状态交互即可。初始化时,买入要初始化为买了第一只股票后的余额。
class Solution:
def maxProfit(self, prices: List[int]) -> int:
dp = [-prices[0], 0, 0] # 持股、不持股、冷冻期
for price in prices:
dp[0] = max(dp[0], dp[1]-price)
dp[1] = max(dp[1], dp[2])
dp[2] = max(dp[2], dp[0]+price)
return max(dp[1], dp[2])