# Best Time to Buy and Sell Stock with Transaction Fee – Leetcode Solution

In this post, we are going to solve the 714. Best Time to Buy and Sell Stock with Transaction Fee problem of Leetcode. This problem 714. Best Time to Buy and Sell Stock with Transaction Fee is a Leetcode medium level problem. Let’s see code, 714. Best Time to Buy and Sell Stock with Transaction Fee – Leetcode Solution.

## Problem

You are given an array `prices` where `prices[i]` is the price of a given stock on the `ith` day, and an integer `fee` representing a transaction fee.

Find the maximum profit you can achieve. You may complete as many transactions as you like, but you need to pay the transaction fee for each transaction.

Note: You may not engage in multiple transactions simultaneously (i.e., you must sell the stock before you buy again).

### Example 1 :

``````
Input: prices = [1,3,2,8,4,9], fee = 2
Output: 8
Explanation: The maximum profit can be achieved by:
- Buying at prices = 1
- Selling at prices = 8
- Buying at prices = 4
- Selling at prices = 9
The total profit is ((8 - 1) - 2) + ((9 - 4) - 2) = 8.
``````

### Example 2 :

``````
Input: prices = [1,3,7,5,10,3], fee = 3
Output: 6
``````

### Constraints

• `1 <= prices.length <= 3 * 104`
• `1 <= prices[i] < 5 * 104`
• `0 <= fee < 5 * 104`

Now, let’s see the code of 714. Best Time to Buy and Sell Stock with Transaction Fee – Leetcode Solution.

# Best Time to Buy and Sell Stock with Transaction Fee – Leetcode Solution

### 714. Best Time to Buy and Sell Stock with Transaction Fee – Solution in Java

```class Solution {
public int maxProfit(int[] prices, int fee) {

int obsp = -prices;
int ossp = 0;

for(int i=1;i<prices.length;i++){
int nbsp = 0;
int nssp = 0;

if(ossp - prices[i] > obsp){
nbsp = ossp - prices[i];
}else{
nbsp = obsp;
}

if(obsp + prices[i] - fee > ossp){
nssp = obsp + prices[i] - fee;
}else{
nssp = ossp;
}

obsp = nbsp;
ossp = nssp;

}
return Math.max(obsp,ossp);
}
}```

### 714. Best Time to Buy and Sell Stock with Transaction Fee – Solution in C++

```class Solution {
public:
int maxProfit(vector<int>& prices, int fee) {
int obsp = -prices;
int ossp = 0;

for(int i=1;i<prices.size();i++){
int nbsp = 0;
int nssp = 0;

if(ossp - prices[i] > obsp){
nbsp = ossp - prices[i];
}else{
nbsp = obsp;
}

if(obsp + prices[i] - fee > ossp){
nssp = obsp + prices[i] - fee;
}else{
nssp = ossp;
}

obsp = nbsp;
ossp = nssp;

}
return max(obsp,ossp);
}
};```

### 714. Best Time to Buy and Sell Stock with Transaction Fee– Solution in Python

```class Solution:
def maxProfit(self, prices: List[int], fee: int) -> int:
ans, cost = 0, prices
for p in prices[1:]:
if p<cost:
cost = p
elif p>cost+fee:
ans += p-(cost+fee)
cost = p-fee
return ans```

Note: This problem 714. Best Time to Buy and Sell Stock with Transaction Fee is generated by Leetcode but the solution is provided by CodingBroz. This tutorial is only for Educational and Learning purpose.