2 minute read

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.

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function (prices) {
  // Initialize the maximum profit to 0
  let maxProfit = 0;
  // Initialize the minimum price to the first element in the array.
  let minPrice = prices[0];

  // Iterate through the array starting from the second element.
  for (let i = 1; i < prices.length; i++) {
    // Check if the current price is greater than the minimum price.
    if (prices[i] > minPrice) {
      // If true, add the difference between the current price and the minimum price to the maximum profit.
      maxProfit += prices[i] - minPrice;
    }
    // Update the minimum price to the current price for the next iteration.
    minPrice = prices[i];
  }

  // Return the maximum profit.
  return maxProfit;
};

The function initializes variables to keep track of the maximum profit (maxProfit) and the minimum stock price encountered so far (minPrice). It then iterates through the price array, calculating profit whenever a higher price is encountered relative to the current minimum price. The profits from multiple buy-sell transactions are accumulated into maxProfit. This approach simulates a strategy of buying stocks at lower prices and selling them at higher prices to maximize profit. The final result is the maximum profit attainable through these transactions.

The time complexity of this algorithm is O(n), where n is the length of the input array ‘prices’, as it iterates through the array once.

Leave a comment