Learn
Practice
Interview
Resources
Newsletter
F
Toggle theme
0
F
0
Toggle menu
Animations
← Back to All Animations
Best Time to Buy and Sell Stock with Cooldown
Bookmark
Memoization
Bottom-Up DP
Space-Optimized
Two-State
Input
Standard
Single day
Longer
Small
Custom
prices
=
[1, 2, 3, 0, 2]
prices
1
0
2
1
3
2
0
3
2
4
prices
1
0
2
1
3
2
0
3
2
4
prices
1
0
2
1
3
2
0
3
2
4
0,0
1,1
3,0
4,1
6,0
5,1
4,0
5,1
5,0
2,1
4,0
3,1
5,0
4,1
1,0
2,1
2,0
3,1
3,0
buy on day 3 for 0
prices
1
0
2
1
3
2
0
3
2
4
0,0
1,1
3,0
4,1
6,0
0
5,1
0
4,0
5,1
5,0
2,1
4,0
3,1
5,0
4,1
1,0
2,1
2,0
3,1
3,0
max(sell 2, hold 0) = 2
prices
1
0
2
1
3
2
0
3
2
4
0,0
1,1
3,0
4,1
2
6,0
0
5,1
0
4,0
5,1
0
5,0
2,1
4,0
3,1
5,0
4,1
1,0
2,1
2,0
3,1
3,0
sit out day 4
memo
(4,1) = 2
prices
1
0
2
1
3
2
0
3
2
4
0,0
1,1
3,0
2
4,1
2
6,0
0
5,1
0
4,0
0
5,1
0
5,0
0
2,1
4,0
3,1
5,0
4,1
1,0
2,1
2,0
3,1
3,0
dfs(2, holding)
memo
(4,1) = 2
(4,0) = 0
(3,0) = 2
prices
1
0
2
1
3
2
0
3
2
4
0,0
1,1
3,0
2
4,1
2
6,0
0
5,1
0
4,0
0
5,1
0
5,0
0
2,1
4,0
0
3,1
5,0
4,1
1,0
2,1
2,0
3,1
3,0
dfs(5, free)
memo
(4,1) = 2
(4,0) = 0
(3,0) = 2
prices
1
0
2
1
3
2
0
3
2
4
0,0
1,1
3,0
2
4,1
2
6,0
0
5,1
0
4,0
0
5,1
0
5,0
0
2,1
3
4,0
0
3,1
2
5,0
0
4,1
2
1,0
2,1
2,0
3,1
3,0
memo[(2,1)] = 3
memo
(4,1) = 2
(4,0) = 0
(3,0) = 2
(3,1) = 2
(2,1) = 3
prices
1
0
2
1
3
2
0
3
2
4
0,0
1,1
4
3,0
2
4,1
2
6,0
0
5,1
0
4,0
0
5,1
0
5,0
0
2,1
3
4,0
0
3,1
2
5,0
0
4,1
2
1,0
2,1
3
2,0
3,1
3,0
(2,1) is already solved
memo
(4,1) = 2
(4,0) = 0
(3,0) = 2
(3,1) = 2
(2,1) = 3
(1,1) = 4
prices
1
0
2
1
3
2
0
3
2
4
0,0
1,1
4
3,0
2
4,1
2
6,0
0
5,1
0
4,0
0
5,1
0
5,0
0
2,1
3
4,0
0
3,1
2
5,0
0
4,1
2
1,0
2,1
3
2,0
3,1
2
3,0
2
(3,0) is already solved
memo
(4,1) = 2
(4,0) = 0
(3,0) = 2
(3,1) = 2
(2,1) = 3
(1,1) = 4
prices
1
0
2
1
3
2
0
3
2
4
0,0
3
1,1
4
3,0
2
4,1
2
6,0
0
5,1
0
4,0
0
5,1
0
5,0
0
2,1
3
4,0
0
3,1
2
5,0
0
4,1
2
1,0
2
2,1
3
2,0
2
3,1
2
3,0
2
best profit = 3
memo
(4,1) = 2
(4,0) = 0
(3,0) = 2
(3,1) = 2
(2,1) = 3
(1,1) = 4
(2,0) = 2
(1,0) = 2
(0,0) = 3
algo
master
.
io
Step:
Prices = [1, 2, 3, 0, 2], one share at a time with a 1-day cooldown after every sale
0 / 67
Input
Standard
Single day
Longer
Small
Custom
prices
=
[1, 2, 3, 0, 2]
0 / 67
algo
master
.
io
Step:
Prices = [1, 2, 3, 0, 2], one share at a time with a 1-day cooldown after every sale