Best Time to Buy and Sell Stock with Transaction Fee LeetCode solution in Python
1class Solution:2def maxProfit(self, prices: List[int], fee: int) -> int:3n = len(prices)4lookup = {}56def f(ind, buy, lookup):78if ind == n:9return 01011if (ind, buy) in lookup:12return lookup[(ind, buy)]13profit = 014if buy:15profit = max(16-prices[ind] + f(ind + 1, 0, lookup), f(ind + 1, 1, lookup)17)18else:19profit = max(20prices[ind] + f(ind + 1, 1, lookup) - fee, f(ind + 1, 0, lookup)21)2223lookup[(ind, buy)] = profit24return lookup[(ind, buy)]2526return f(0, 1, lookup)