121. Best Time to Buy and Sell Stock

Easy

Problem:

Determine the maximum profit that can be made from a single transaction.

Input: prices = [7,1,5,3,6,4] 
Output: 5 
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5. Note that buying on day 2 and selling on day 1 is not allowed because you must buy before you sell.

https://leetcode.com/problems/best-time-to-buy-and-sell-stock/

What to learn:

To prevent a TypeError during comparison, if the minimum and maximum values are set to the system's maximum and minimum values, any incoming value can be immediately replaced.

Solution:

As the pointer pointing to the current value moves to the right, it calculates the price difference based on the previous low point, and if it is higher, it continues to replace the maximum value. This allows for a solution in O(n) time.

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        max_profit = 0
        min_price = sys.maxsize

        for price in prices:
            min_price = min(min_price, price)
            max_profit = max(max_profit, price - min_price)

        return max_profit

Last updated