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 III
Bookmark
Input
Standard
Increasing
Decreasing
Complex
Custom
prices
=
[3, 3, 5, 0, 0, 3, 1, 4]
prices
3
day 0
3
day 1
5
day 2
0
day 3
0
day 4
3
day 5
1
day 6
4
day 7
buy1
holding #1
sell1
closed #1
buy2
holding #2
sell2
closed #2
track 4 running states; each day the profit cascades buy1 → sell1 → buy2 → sell2
prices
3
day 0
3
day 1
5
day 2
0
day 3
0
day 4
3
day 5
1
day 6
4
day 7
buy1
holding #1
sell1
closed #1
buy2
holding #2
sell2
closed #2
track 4 running states; each day the profit cascades buy1 → sell1 → buy2 → sell2
prices
3
day 0
3
day 1
5
day 2
0
day 3
0
day 4
3
day 5
1
day 6
4
day 7
i
buy1
holding #1
sell1
closed #1
buy2
holding #2
sell2
closed #2
-3
0
-3
− 3
buy2
= max(
-∞
,
0 - 3
) =
-3
prices
3
day 0
3
day 1
5
day 2
0
day 3
0
day 4
3
day 5
1
day 6
4
day 7
i
buy1
holding #1
sell1
closed #1
buy2
holding #2
sell2
closed #2
-3
-3
0
0
-3
-3
0
− 3
keep
buy2
= max(
-3
,
0 - 3
) =
-3
prices
3
day 0
3
day 1
5
day 2
0
day 3
0
day 4
3
day 5
1
day 6
4
day 7
i
buy1
holding #1
sell1
closed #1
buy2
holding #2
sell2
closed #2
-3
-3
-3
0
0
2
-3
-3
0
0
+ 5
keep
sell1
= max(
0
,
-3 + 5
) =
2
prices
3
day 0
3
day 1
5
day 2
0
day 3
0
day 4
3
day 5
1
day 6
4
day 7
i
buy1
holding #1
sell1
closed #1
buy2
holding #2
sell2
closed #2
-3
-3
-3
0
0
0
2
2
-3
-3
-3
0
0
2
+ 0
keep
sell1
= max(
2
,
0 + 0
) =
2
prices
3
day 0
3
day 1
5
day 2
0
day 3
0
day 4
3
day 5
1
day 6
4
day 7
i
buy1
holding #1
sell1
closed #1
buy2
holding #2
sell2
closed #2
-3
-3
-3
0
0
0
0
2
2
2
-3
-3
-3
2
0
0
2
2
+ 0
keep
sell1
= max(
2
,
0 + 0
) =
2
prices
3
day 0
3
day 1
5
day 2
0
day 3
0
day 4
3
day 5
1
day 6
4
day 7
i
buy1
holding #1
sell1
closed #1
buy2
holding #2
sell2
closed #2
-3
-3
-3
0
0
0
0
0
2
2
2
3
-3
-3
-3
2
2
0
0
2
2
2
+ 3
keep
sell1
= max(
2
,
0 + 3
) =
3
prices
3
day 0
3
day 1
5
day 2
0
day 3
0
day 4
3
day 5
1
day 6
4
day 7
i
buy1
holding #1
sell1
closed #1
buy2
holding #2
sell2
closed #2
-3
-3
-3
0
0
0
0
0
0
2
2
2
3
-3
-3
-3
2
2
2
0
0
2
2
2
5
− 1
keep
buy1
= max(
0
,
-1
) =
0
prices
3
day 0
3
day 1
5
day 2
0
day 3
0
day 4
3
day 5
1
day 6
4
day 7
i
buy1
holding #1
sell1
closed #1
buy2
holding #2
sell2
closed #2
-3
-3
-3
0
0
0
0
0
0
0
2
2
2
3
3
-3
-3
-3
2
2
2
2
0
0
2
2
2
5
5
− 4
keep
buy1
= max(
0
,
-4
) =
0
prices
3
day 0
3
day 1
5
day 2
0
day 3
0
day 4
3
day 5
1
day 6
4
day 7
i
buy1
holding #1
sell1
closed #1
buy2
holding #2
sell2
closed #2
-3
-3
-3
0
0
0
0
0
0
0
2
2
2
3
3
4
-3
-3
-3
2
2
2
2
2
0
0
2
2
2
5
5
6
answer = sell2 =
6
algo
master
.
io
Step:
Start: at most 2 buy/sell transactions on prices = [3, 3, 5, 0, 0, 3, 1, 4]
0 / 34
Input
Standard
Increasing
Decreasing
Complex
Custom
prices
=
[3, 3, 5, 0, 0, 3, 1, 4]
0 / 34
algo
master
.
io
Step:
Start: at most 2 buy/sell transactions on prices = [3, 3, 5, 0, 0, 3, 1, 4]