123. 买卖股票的最佳时机 III
解法一:dp
class Solution:
def maxProfit(self, prices: List[int]) -> int:
n = len(prices)
if n < 2:
return 0
dp1 = [0 for _ in range(n)]
dp2 = [0 for _ in range(n)]
min_val, max_val = prices[0], prices[n-1]
#前向
for i in range(1, n):
dp1[i] = max(dp1[i-1], prices[i]-min_val)
min_val = min(min_val, prices[i])
#后向
for i in range(n-2, -1, -1):
dp2[i] = max(dp2[i+1], max_val-prices[i])
max_val = max(max_val, prices[i])
#合并输出
return max([dp1[i]+dp2[i] for i in range(n)])解法二:状态机dp
最后更新于