zoukankan      html  css  js  c++  java
  • 每日一题力扣121 最佳买股票

    给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

    你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

    返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

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

    妈耶,这个思路太棒了吧

    class Solution:
        def maxProfit(self, prices: List[int]) -> int:
            dp0 = 0             # 一直不买
            dp1 = - prices[0]   # 只买了一次
            dp2 = float('-inf') # 买了一次,卖了一次
    
            for i in range(1, len(prices)):
                dp1 = max(dp1, dp0 - prices[i])
                dp2 = max(dp2, dp1 + prices[i])
            return max(dp0, dp2)
    
    作者:edelweisskoko
    链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/solution/121-mai-mai-gu-piao-de-zui-jia-shi-ji-zu-1v0i/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    SPOJ VJudge QTREE
    LCA 在线倍增法 求最近公共祖先
    Codevs 2370 小机房的树
    51Nod-1632-B君的连通
    51Nod--1100-斜率最大
    51Nod-1276-岛屿的数量
    51Nod-1270-数组的最大代价
    poj
    hihocoder Week136 -- 优化延迟
    poj-1035-Spell Checker
  • 原文地址:https://www.cnblogs.com/liuxiangyan/p/14602643.html
Copyright © 2011-2022 走看看