题解 | #买卖股票的最好时机(一)#

买卖股票的最好时机(一)

https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec

一个普遍的解法。记录下标区间。
class Solution:
    def maxProfit(self , prices: List[int]) -> int:
        # 初始化
        x = 0
        y = 0
        maxsub = 0
        # 滑动区间
        left = 0
        right = 0
        # 记录最大差的区间
        resl = 0
        resr = 0
        for i in range(1, len(prices)):
            right += 1
            # 状态转移:最大差
            y = max(x + prices[i] - prices[i - 1], 0)
            # 滑动区间新起点
            if x + prices[i] - prices[i-1] < 0:
                left = right
            # 更新最大值
            if y > maxsub: 
                maxsub = y
                resl = left
                resr = right
            # 更新x的状态
            x = y 

        # 取结果。本题也可以返回maxsub,有些题需要用下标描述。
        # return maxsub
        return len(prices) and prices[resr] - prices[resl]


全部评论

相关推荐

双尔:反手回一个很抱歉,经过慎重考虑,您与我的预期暂不匹配,感谢您的投递
点赞 评论 收藏
分享
12-02 20:08
已编辑
门头沟学院 后端工程师
notbeentak...:孩子,说实话,选择很重要,可能你换一个方向会好很多,但是现在时间不太够了,除非准备春招
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务