In my ongoing quest to sharpen my LeetCode skills, I tackled the "Best Time to Buy and Sell Stock II" problem. This challenge is a follow-up to the classic "Best Time to Buy and Sell Stock II" problem (LeetCode 121) but with a crucial difference: *you can execute multiple transactions to maximize profit.
*
A Visual Approach
Before diving into code, I found it incredibly helpful to visualize the problem on a whiteboard. This allowed me to break down the problem into smaller, more manageable steps.
The Greedy Approach
Given the flexibility to make unlimited transactions, a greedy approach seemed promising. The core idea is simple: whenever the price of a stock increases compared to the previous day, we consider it a potential profit opportunity. By adding up all these price differences, we effectively calculate the maximum profit.
Python Implementation
Here's the Python code that implements this greedy strategy:
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
    
    
  
  
  JavaScript Implementation
/**
- @param {number[]} prices
- 
@return {number}
 */
 var maxProfit = function(prices) {
 var profit = 0;
 for (var i = 1; i < prices.length; i++)
 {
 if(prices[i] > prices[i-1])
 {
 profit += Number(prices[i] - prices[i-1])
 }
 }
 return profit
 };
 
  
  
  Time and Space Complexity
- The time complexity of this approach is O(N) where N = length of array.
- The space complexity is N(1) as we are comparing in place.
 

 
                       
    
Top comments (0)