# 121. Best Time to Buy and Sell Stock

## Problem:

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

{% code overflow="wrap" %}

```
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.
```

{% endcode %}

<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.

<pre class="language-python"><code class="lang-python">class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        max_profit = 0
<strong>        min_price = sys.maxsize
</strong>
        for price in prices:
            min_price = min(min_price, price)
            max_profit = max(max_profit, price - min_price)

        return max_profit
</code></pre>
