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 Transaction Fee
Bookmark
DP Arrays
Space-Optimized
Greedy
Input
Standard
Fee = 3
Longer
Fee = 1
Custom
prices
=
[1, 3, 2, 8, 4, 9]
,
fee
=
2
prices
fee =
2
cash
not holding
hold
holding a share
track 2 states per day: cash if liquid, hold if you own a share, pay the fee on every sale
prices
fee =
2
cash
not holding
hold
holding a share
track 2 states per day: cash if liquid, hold if you own a share, pay the fee on every sale
prices
fee =
2
1
day 0
3
day 1
2
day 2
8
day 3
4
day 4
9
day 5
i
cash
not holding
hold
holding a share
0
-1
day 0:
cash = 0
,
hold = -1
prices
fee =
2
1
day 0
3
day 1
2
day 2
8
day 3
4
day 4
9
day 5
i
cash
not holding
hold
holding a share
0
0
-1
-1
keep
buy
hold
= max(
-1
,
0 - 3
) =
-1
prices
fee =
2
1
day 0
3
day 1
2
day 2
8
day 3
4
day 4
9
day 5
i
cash
not holding
hold
holding a share
0
0
0
-1
-1
keep
sell
cash
= max(
0
,
-1 + 2 - 2
) =
0
prices
fee =
2
1
day 0
3
day 1
2
day 2
8
day 3
4
day 4
9
day 5
i
cash
not holding
hold
holding a share
0
0
0
-1
-1
-1
keep
buy
hold
= max(
-1
,
0 - 2
) =
-1
prices
fee =
2
1
day 0
3
day 1
2
day 2
8
day 3
4
day 4
9
day 5
i
cash
not holding
hold
holding a share
0
0
0
5
-1
-1
-1
-1
keep
buy
hold
= max(
-1
,
0 - 8
) =
-1
prices
fee =
2
1
day 0
3
day 1
2
day 2
8
day 3
4
day 4
9
day 5
i
cash
not holding
hold
holding a share
0
0
0
5
5
-1
-1
-1
-1
keep
sell
cash
= max(
5
,
-1 + 4 - 2
) =
5
prices
fee =
2
1
day 0
3
day 1
2
day 2
8
day 3
4
day 4
9
day 5
i
cash
not holding
hold
holding a share
0
0
0
5
5
-1
-1
-1
-1
1
keep
buy
hold
= max(
-1
,
5 - 4
) =
1
prices
fee =
2
1
day 0
3
day 1
2
day 2
8
day 3
4
day 4
9
day 5
i
cash
not holding
hold
holding a share
0
0
0
5
5
8
-1
-1
-1
-1
1
1
keep
buy
hold
= max(
1
,
5 - 9
) =
1
prices
fee =
2
1
day 0
3
day 1
2
day 2
8
day 3
4
day 4
9
day 5
i
cash
not holding
hold
holding a share
0
0
0
5
5
8
-1
-1
-1
-1
1
1
answer = cash =
8
algo
master
.
io
Step:
Start: stock prices = [1, 3, 2, 8, 4, 9], as many buy/sell pairs as you like, paying a fee of 2 on every sale
0 / 12
Input
Standard
Fee = 3
Longer
Fee = 1
Custom
prices
=
[1, 3, 2, 8, 4, 9]
,
fee
=
2
0 / 12
algo
master
.
io
Step:
Start: stock prices = [1, 3, 2, 8, 4, 9], as many buy/sell pairs as you like, paying a fee of 2 on every sale