Skip to content

Commit 29f24ed

Browse files
authored
Create 309-Best-Time-To-Buy-and-Sell-Stock-With-Cooldown.py
1 parent b52d526 commit 29f24ed

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution:
2+
def maxProfit(self, prices: List[int]) -> int:
3+
# State: Buying or Selling?
4+
# If Buy -> i + 1
5+
# If Sell -> i + 2
6+
7+
dp = {} # key=(i, buying) val=max_profit
8+
9+
def dfs(i, buying):
10+
if i >= len(prices):
11+
return 0
12+
if (i, buying) in dp:
13+
return dp[(i, buying)]
14+
15+
cooldown = dfs(i + 1, buying)
16+
if buying:
17+
buy = dfs(i + 1, not buying) - prices[i]
18+
dp[(i, buying)] = max(buy, cooldown)
19+
else:
20+
sell = dfs(i + 2, not buying) + prices[i]
21+
dp[(i, buying)] = max(sell, cooldown)
22+
return dp[(i, buying)]
23+
24+
return dfs(0, True)

0 commit comments

Comments
 (0)