123. 买卖股票的最佳时机 III - 力扣(LeetCode)
class Solution:def maxProfit(self, prices: List[int]) -> int:if not prices:return 0n = len(prices)dp = [[0] * 5 for _ in range(n)]# 初始化dp[0][1] = -prices[0] # 第一次买入dp[0][2] = 0 # 第一次卖出dp[0][3] = -prices[0] # 第二次买入dp[0][4] = 0 # 第二次卖出for i in range(1, n):dp[i][1] = max(dp[i-1][1], -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[n-1][4]