LeetCode 121. 买卖股票的最佳时机 (Best Time to Buy and Sell Stock)[简单]

lework · 2020年04月09日 · 最后由 lework 回复于 2020年04月09日 · 133 次阅读

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

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

注意:你不能在买入股票前卖出股票。

 

示例 1:

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例 2:

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        # 1. 记录【今天之前买入的最小值】
        # 2. 计算【今天之前最小值买入,今天卖出的获利】,也即【今天卖出的最大获利】
        # 3. 比较【每天的最大获利】,取最大值即可
        if len(prices) <= 1:
            return 0

        min_input = prices[0]
        max_profit = 0
        for p in prices[1:]:
            min_input = min(p, min_input)
            max_profit = max(max_profit, p - min_input)

        return max_profit
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册