Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Same approach like 2 and 3, just now k transaction is allowed so cols =2*k(one for buy and one for sell.)
- def fun(arr, i, k, dp):
- if i == len(arr) or k == 0:
- return 0
- if dp[i][k] != -1:
- return dp[i][k]
- # buy
- if k % 2 == 0:
- ans = max( -arr[i] + fun(arr, i + 1, k - 1, dp), fun(arr, i + 1, k, dp))
- # sell
- else:
- ans = max( arr[i] + fun(arr, i + 1, k - 1, dp), fun(arr, i + 1, k, dp))
- dp[i][k] = ans
- return ans
- class Solution:
- def maxProfit(self, k: int, prices: List[int]) -> int:
- k = 2 * k
- dp = [[-1] * (k + 1) for _ in range(len(prices))]
- return fun(prices, 0, k, dp)
Advertisement
Add Comment
Please, Sign In to add comment