#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Time    : 2019/11/25
# @Author  : xujun
"""
买卖股票的最佳时机
给定一个数组，它的第 i 个元素是一支给定股票第 i 天的价格。

如果你最多只允许完成一笔交易（即买入和卖出一支股票），设计一个算法来计算你所能获取的最大利润。

注意你不能在买入股票前卖出股票。
优秀解答：
https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/solution/yi-ge-fang-fa-tuan-mie-6-dao-gu-piao-wen-ti-by-l-3/
"""


class Solution:
    def maxProfit(self, prices) -> int:
        if len(prices) > 0:
            min_price = prices[0]
        max_diff = 0
        for price in prices:
            min_price = min(min_price, price)
            diff = price - min_price
            max_diff = max(diff, max_diff)
        return max_diff
