## DEV Community

Ingila Ejaz for This is Learning

Posted on

# Cracking the LeetCode 122. Best Time to Buy and Sell Stock II

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.