imashutosh51

Best Time to Buy and Sell Stock IV

Jan 28th, 2026 (edited)
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.69 KB | None | 0 0
  1. #Same approach like 2 and 3, just now k transaction is allowed so cols =2*k(one for buy and one for sell.)
  2. def fun(arr, i, k, dp):
  3.     if i == len(arr) or k == 0:
  4.         return 0
  5.     if dp[i][k] != -1:
  6.         return dp[i][k]
  7.     # buy
  8.     if k % 2 == 0:
  9.         ans = max( -arr[i] + fun(arr, i + 1, k - 1, dp), fun(arr, i + 1, k, dp))
  10.     # sell
  11.     else:
  12.         ans = max( arr[i] + fun(arr, i + 1, k - 1, dp), fun(arr, i + 1, k, dp))
  13.  
  14.     dp[i][k] = ans
  15.     return ans
  16.  
  17. class Solution:
  18.     def maxProfit(self, k: int, prices: List[int]) -> int:
  19.         k = 2 * k
  20.         dp = [[-1] * (k + 1) for _ in range(len(prices))]
  21.         return fun(prices, 0, k, dp)
  22.        
  23.        
  24.        
Advertisement
Add Comment
Please, Sign In to add comment