Skip to content

Commit 77d23a1

Browse files
authored
Create 309-Best-Time-To-Buy-And-Sell-Stock-With-Cooldown.js
1 parent 6e16474 commit 77d23a1

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @param {number[]} prices
3+
* @return {number}
4+
*/
5+
var maxProfit = function(prices) {
6+
let dp = {} // key=[i, buying] val=max_profit
7+
8+
const dfs = (i, buying) => {
9+
if (i >= prices.length) return 0
10+
if (dp[[i, buying]]) return dp[[i, buying]]
11+
12+
const cooldown = dfs(i + 1, buying)
13+
if (buying) {
14+
const buy = dfs(i + 1, !buying) - prices[i]
15+
dp[[i, buying]] = Math.max(buy, cooldown)
16+
}
17+
else {
18+
sell = dfs(i + 2, !buying) + prices[i]
19+
dp[[i, buying]] = Math.max(sell, cooldown)
20+
}
21+
return dp[[i, buying]]
22+
}
23+
24+
return dfs(0, true)
25+
};
26+

0 commit comments

Comments
 (0)