220 - 188 买卖股票的最佳时机 IV
题目
解答
class Solution:
def maxProfit(self, k: int, prices: List[int]) -> int:
if not prices or len(prices) < 2 or k == 0:
return 0
size = len(prices)
if k >= size//2:
res = 0
for i in range(1, size):
if prices[i] > prices[i-1]:
res += prices[i]-prices[i-1]
return res
dp = [[[0, float('-inf')] for _ in range(k+1)] for _ in range(size+1)]
for i in range(1, size+1):
for j in range(1, k+1):
dp[i][j][1] = max(dp[i-1][j][1], dp[i-1][j-1][0]-prices[i-1])
dp[i][j][0] = max(dp[i-1][j][0], dp[i-1][j][1]+prices[i-1])
return dp[size][k][0]Last updated