given a list of stock prices calculate the maximum profit that can be made from a single buy and sell of one share of stock we only allowed to complete one buy transaction and one sell transaction but must buy before we sell example prices 7 1 5 3 6 4 maxprofit will return 5 which is by buying at price 1 and selling at price 6 this problem can be solved using the concept of greedy algorithm we iterate over the price array once keeping track of the lowest price point buy and the maximum profit we can get at each point the greedy choice at each point is to either buy at the current price if it s less than our current buying price or sell at the current price if the profit is more than our current maximum profit maxprofit7 1 5 3 6 4 5 maxprofit7 6 4 3 1 0 max_profit 7 1 5 3 6 4 5 max_profit 7 6 4 3 1 0
def max_profit(prices: list[int]) -> int:
    
    if not prices:
        return 0

    min_price = prices[0]
    max_profit: int = 0

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

    return max_profit


if __name__ == "__main__":
    import doctest

    doctest.testmod()
    print(max_profit([7, 1, 5, 3, 6, 4]))