In this post, we are going to solve the** 122. Best Time to Buy and Sell Stock II** problem of Leetcode. This problem **122. Best Time to Buy and Sell Stock II** is a Leetcode

**medium**level problem. Let’s see code,

**122. Best Time to Buy and Sell Stock II**

**– Leetcode Solution**.

**Problem**

You are given an integer array `prices`

where `prices[i]`

is the price of a given stock on the `i`

day.^{th}

On each day, you may decide to buy and/or sell the stock. You can only hold **at most one** share of the stock at any time. However, you can buy it then immediately sell it on the **same day**.

Find and return *the maximum profit you can achieve*.

**Example 1 :**

```
Input: prices = [7,1,5,3,6,4]
Output: 7
Explanation: Buy on day 2 (price = 1) and sell on day 3 (price = 5), profit = 5-1 = 4.
Then buy on day 4 (price = 3) and sell on day 5 (price = 6), profit = 6-3 = 3.
Total profit is 4 + 3 = 7.
```

**Example 2 :**

```
Input: prices = [1,2,3,4,5]
Output: 4
Explanation: Buy on day 1 (price = 1) and sell on day 5 (price = 5), profit = 5-1 = 4.
Total profit is 4.
```

**Example 3 :**

```
Input: prices = [7,6,4,3,1]
Output: 0
Explanation: There is no way to make a positive profit, so we never buy the stock to achieve the maximum profit of 0.
```

**Constraints**

`1 <= prices.length <= 3 * 10`

^{4}`0 <= prices[i] <= 10`

^{4}

Now, let’s see the code of **122. Best Time to Buy and Sell Stock II** – Leetcode Solution.

**Best Time to Buy and Sell Stock II – Leetcode Solution**

**122. Best Time to Buy and Sell Stock II** – Solution in Java

**– Solution in Java**

**122. Best Time to Buy and Sell Stock II**class Solution { public int maxProfit(int[] prices) { int buyDay = 0; int sellDay = 0; int profit = 0; for(int i=1;i<prices.length;i++){ if(prices[i] >= prices[i-1]){ sellDay++; }else{ profit += prices[sellDay] - prices[buyDay]; buyDay = sellDay = i; } } profit += prices[sellDay] - prices[buyDay]; return profit; } }

**122. Best Time to Buy and Sell Stock II** – Solution in C++

**C++**

**– Solution in****122. Best Time to Buy and Sell Stock II**class Solution { public: int maxProfit(vector<int>& prices) { int buyDay = 0; int sellDay = 0; int profit = 0; for(int i=1;i<prices.size();i++){ if(prices[i] >= prices[i-1]){ sellDay++; }else{ profit += prices[sellDay] - prices[buyDay]; buyDay = sellDay = i; } } profit += prices[sellDay] - prices[buyDay]; return profit; } };

**122. Best Time to Buy and Sell Stock II** **– Solution in **Python

**Python**

**– Solution in**class Solution(object): def maxProfit(self, prices): """ :type prices: List[int] :rtype: int """ mx = 0 # max profit n = len(prices) for i in reversed(range(1, n)): mx = max(mx, prices[i]-prices[i-1]+mx) return mx

**Note:** This problem **122. Best Time to Buy and Sell Stock II** is generated by **Leetcode **but the solution is provided by **CodingBroz**. This tutorial is only for **Educational** and **Learning** purpose.