Skip to content
JsDevLife
Menu
  • Home
  • Leetcode in JS
  • About me
  • Contact Us
Menu

Solution to LeetCode Problem 122: Best Time to Buy and Sell Stock II in JavaScript

Posted on December 17, 2022July 30, 2023 by Vikas Kad

 

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.

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Solving LeetCode Problem 79 – Word Search in JavaScript
  • Solving LeetCode Problem 48: Rotate Image using JavaScript
  • Solving the “Container With Most Water” LeetCode Problem in JavaScript – A Comprehensive Guide
  • LeetCode Solution: 54: Spiral Matrix in JavaScript
  • Solution to LeetCode Problem 31. Next Permutation in JavaScript

Archives

  • 2023 (5)
  • 2022 (20)
  • 2021 (2)
  • 2020 (4)
  • 2019 (14)
  • 2018 (17)

Categories

  • blockchain development
  • Blog
  • crystal
  • flutter
  • flutter.io
  • GitHub
  • Installation
  • Ionic Framework
  • javascript
  • leetcode-in-js
  • masteringInJavasript
  • mcqs
  • MongoDB
  • nodejs
  • Object Oriented Javacript
  • python
  • smart contracts
  • visual studio

Quick Links

  • Home
  • Leetcode in JS
  • About me
  • Contact Us

Terms of service

  • Terms Of Service
  • Disclaimer
©2023 JsDevLife | Design: Newspaperly WordPress Theme