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

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

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]


全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务