Best Time to Buy and Sell Stock

I tried to find out local maxima and local minima, and then calculate the difference between them, it turned out that this is not needed.

  • Constraints/Patterns
    • Keep track of the min_price, we always plan to sell from this point.
    • Move the window forward, and calculate profit each time, compare with max_profit
max_profit = 0
min_price = float('inf') # Initialize to infinity
for price in prices:
    if price < min_price:
        min_price = price # Update minimum price
    elif price - min_price > max_profit:
        max_profit = price - min_price # Update maximum profit
return max_profit

To make this even more efficient, also keep in track of the max_price, skip the verification process of those that are not the biggest.