this page ⟩ lc notescollectionshome

Best Time to Buy and Sell Stock [LC#121]

You are given an array prices where prices[i] is the price of a given stock on the ith day. You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock. Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0.

Inutition

  • The solution is a variation of Kadane’s algorithm.
  • Keep track of minimum seen so far.
  • Max profit if we sell now can be computed with this minimum.
  • Keep track of max profit.

Code

def max_profit(prices: List[int]) -> int:
    max_profit = 0
    min_price = prices[0]
    for price in prices:
        min_price = min(min_price, price)
        max_profit = max(max_profit, price - min_price)
    return max_profit

Time Complexity

  • $T(n) = O(n)$ and $S(n) = O(1)$



tags: #greedy