LeetCode 121 买卖股票的最佳时机




思路

题目的意思就是求序列中正向遍历的最大差值。看列表长度的量级,想要暴力双层遍历求差,复杂度$O(n^2)$肯定会超时。

想要求第$i$天时的最大利润,实际上就是求前$i-$天的最小值,再与第$i$天当天的值相减,遍历过程中取差值最大值即可。
也就是维护两个值:

  • price[0]price[i-1]的最小值(用minp表示)
  • price[i]-minp的最大值(用ans表示)

题解

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        minp = inf
        ans=  0
        for idx, num in enumerate(prices):
            minp = min(minp,num)
            ans = max(ans, num-minp)
        
        return ans

声明:奋斗小刘|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - LeetCode 121 买卖股票的最佳时机


Make Everyday Count