Last updated on January 10th, 2025 at 03:14 pm
Here, we see a Best Time to Buy and Sell Stock II Leetcode Solution. This Leetcode problem is solved using different approaches in many programming languages, such as C++, Java, JavaScript, Python, etc.
List of all LeetCode Solution
Topics
Companies
Level of Question
Best Time to Buy and Sell Stock II LeetCode Solution
Table of Contents
1. Problem Statement
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.
2. Coding Pattern Used in Solution
The coding pattern used here is Greedy Algorithm. Greedy Algorithm pattern because it makes a locally optimal choice (adding profit for each price increase) at each step to achieve the global maximum profit.
3. How the Code Works
- The code iterates through the
prices
array starting from the second day. - For each day, it checks if the price is higher than the previous day.
- If the price is higher, it calculates the profit (
prices[i] - prices[i-1]
) and adds it to the total profit. - At the end of the loop, the total profit is returned.
This approach ensures that all profitable transactions are captured without explicitly tracking the buy and sell days.
4. Code Implementation in Different Languages
4.1 Best Time to Buy and Sell Stock II C++
class Solution { public: int maxProfit(vector<int>& prices) { int i = 0, profit = 0, buy, sell; while (i < prices.size() - 1) { while (i < prices.size() - 1 && prices[i + 1] <= prices[i]) { i++; } buy = prices[i]; while (i < prices.size() - 1 && prices[i + 1] > prices[i]) { i++; } sell = prices[i]; profit += sell - buy; } return profit; } };
4.2 Best Time to Buy and Sell Stock II Java
class Solution { public int maxProfit(int[] prices) { int maxprofit = 0; for (int i = 1; i < prices.length; i++) { if (prices[i] > prices[i - 1]) maxprofit += prices[i] - prices[i - 1]; } return maxprofit; } }
4.3 Best Time to Buy and Sell Stock II JavaScript
var maxProfit = function(prices) { let profits = [0]; // base condition for(let i = 1; i < prices.length; i++) { profits[i] = profits[i - 1] + Math.max(0, prices[i] - prices[i - 1]); } return profits.pop(); };
4.4 Best Time to Buy and Sell Stock II Python
class Solution: def maxProfit(self, prices: List[int]) -> int: profit = 0 for i in range(1, len(prices)): if prices[i] > prices[i - 1]: profit += prices[i] - prices[i - 1] return profit
5. Time and Space Complexity
Time Complexity | Space Complexity | |
Java | O(n) | O(1) |
Python | O(n) | O(1) |
C++ | O(n) | O(1) |
JavaScript | O(n) | O(n) |
- The problem is solved using a Greedy Algorithm.
- The Java, Python, and C++ implementations are more space-efficient (O(1) space) compared to the JavaScript implementation (O(n) space due to the
profits
array). - All implementations have the same time complexity of O(n).