# JSDevLife

JavaScript Solutions, Competitive programming in JavaScript, MCQ in JS

# The solution to LeetCode Problem 122: Best Time to Buy and Sell Stock II in JavaScript

If you're preparing for technical interviews or want to improve your coding skills, solving practice problems on LeetCode is a great way.

In this post, we'll discuss a solution to the "Best Time to Buy and Sell Stock II" problem on LeetCode.

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

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 * 104`
• `0 <= prices[i] <= 104`

Solution

The key to this problem is to realize that we can simply add up all the positive differences between consecutive elements in the array.

This is because we are allowed to make as many transactions as we want, so we can take advantage of every opportunity to buy low and sell high.

Here is the solution in JavaScript:

function maxProfit(prices) {
let profit = 0;
for (let i = 1; i < prices.length; i++) {
if (prices[i] > prices[i - 1]) {
profit += prices[i] - prices[i - 1];
}
}
return profit;
}

Let's go through an example to see how this solution works.

Consider the input [7,1,5,3,6,4].

Our loop will start at i = 1, and the first iteration will have prices[i] equal to 1 and prices[i - 1] equal to 7. Since 1 is less than 7, the if condition will not be met and profit will not be updated.

On the next iteration, i is incremented to 2, and prices[i] is 5 and prices[i - 1] is 1. Since 5 is greater than 1, the if condition is met and profit is updated to profit + (5 - 1) = 4.

The loop continues in this manner, updating profit each time the if condition is met. When the loop is finished, profit will be equal to the maximum profit that can be made by buying and selling the stock multiple times.

#### This solution has a time complexity of O(n), where n is the length of the prices array, since we only need to loop through the array once.

I hope this helps! Let me know if you have any questions or suggestions for improvement.