DEV Community

Masaki Fukunishi
Masaki Fukunishi

Posted on

LeetCode #121. Best Time to Buy and Sell Stock with JavaScript

Solutions to LeetCode's 121. Best Time to Buy and Sell Stock with JavaScript.

Solution 1

/**
 * @param {number[]} prices
 * @return {number}
 */
const maxProfit = (prices) => {
  let maxProfit = 0;
  for (let i = 0; i < prices.length - 1; i++) {
    for (let j = i + 1; j < prices.length; j++) {
      let profit = prices[j] - prices[i];
      if (maxProfit < profit) {
        maxProfit = profit;
      }
    }
  }
  return maxProfit;
};
Enter fullscreen mode Exit fullscreen mode
  • Time complexity: O(n^2)
  • Space complexity: O(1)

The Time complexity of this solution is O(n^2), so I'll find another solution.

Solution 2

/**
 * @param {number[]} prices
 * @return {number}
 */
const maxProfit = (prices) => {
  let maxProfit = 0;
  let stockToBuy = prices[0];

  for (let i = 1; i < prices.length; i++) {
    if (stockToBuy > prices[i]) {
      stockToBuy = prices[i];
    }
    const profit = prices[i] - stockToBuy;

    if (maxProfit < profit) {
      maxProfit = profit;
    }
  }
  return maxProfit;
};
Enter fullscreen mode Exit fullscreen mode
  • Time complexity: O(n)
  • Space complexity: O(1)

I was able to change the for loop to one and shorten the time complexity to O(n).

Top comments (0)