188. Best Time to Buy and Sell Stock IV

class Solution:
    def maxProfit(self, k: int, prices: List[int]) -> int:
        n = len(prices)
        if n <= 1: return 0
        
        dp = [[0 for _ in range(n)] for _ in range(k+1)]
        
        # i: how many transaction made
        # j: # of day
        for i in range(1, k+1):
            maxDiff = -prices[0]
            for j in range(1, n):
                maxDiff = max(maxDiff, dp[i-1][j-1] - prices[j-1])
                dp[i][j] = max(dp[i][j-1], prices[j] + maxDiff)
                
        return dp[-1][-1]        

Last updated

Was this helpful?