0121. Best Time to Buy and Sell Stock

Easy | Array + DP | 796 ms (96.38%), 22.7 MB (60.86%)

Source: LeetCode - Best Time to Buy and Sell Stockarrow-up-right GitHub: Solution / Performancearrow-up-right

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.

circle-info

We can use Final State Machine to solve the series of these problems.

triangle-exclamation
  • Hold state means you hold the stock.

    • Since you don't have any stocks at the beginning, the profit at this state is initialized with negative infinity.

    • The profit in this state is calculated by: previous no-hold state's profit - current stock price (= buy) = 0 - current stock price

  • No-Hold state means you do not hold any stocks.

    • Since you don't have any stocks at the beginning (you're initially at this state ), the profit at this state is initialized with 0.

    • The profit in this state is calculated by: previous hold state's profit + current stock price (= sell)

    • Return the profit at the no-hold state as the maximum profit since the hold state still has stock on hold.

Last updated