买卖股票的最佳时机1
class Solution:
def maxProfit(self, prices: List[int]) -> int:
dp = [[-1] * 2 for _ in range(len(prices))]
dp[0][0] = 0
dp[0][1] = -prices[0]
for i in range(1, len(prices)):
dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
dp[i][1] = max(dp[i-1][1], - prices[i])
return dp[-1][0]
买卖股票的最佳时机2
class Solution:
def maxProfit(self, prices: List[int]) -> int:
dp = [[-1] * 2 for _ in range(len(prices))]
dp[0][0] = 0
dp[0][1] = -prices[0]
for i in range(1, len(prices)):
dp[i][0] = max(dp[i-1][0], dp[i-1][1] + prices[i])
dp[i][1] = max(dp[i-1][1], dp[i-1][0] - prices[i])
return dp[-1][0]
买卖股票的最佳时机3
dp = [[[0] * 2 for _ in range(3)] for _ in range(len(prices))]
dp[0][0][0] = 0
dp[0][0][1] = float('-inf')
dp[0][1][0] = 0
dp[0][1][1] = -prices[0]
dp[0][2][0] = 0
dp[0][2][1] = -prices[0]
for i in range(1,len(prices)):
for time in range(2,0,-1):
dp[i][time][0] = max(dp[i-1][time][0], dp[i-1][time][1] + prices[i])
dp[i][time][1] = max(dp[i-1][time][1], dp[i-1][time - 1][0] - prices[i])
return dp[-1][2][0]