LeetCode309 最佳买卖股票时机含冷冻期

LeetCode309 最佳买卖股票时机含冷冻期

\(dp[i]\) 表示第 \(i\) 天结束之后所获得的最大收益

  • \(dp[i][0]\) 表示第 \(i\) 天结束之后手中持有一张股票,该股票来源包括今天购买和昨天就持有
  • \(dp[i][1]\) 表示第 \(i\) 天结束之后手中没有股票,且处于冷冻期,即今天卖出手中股票
  • \(dp[i][1]\) 表示第 \(i\) 天结束之后手中没有股票,且不处于冷冻期,即昨天手中没有股票,且处于冷冻期或昨天也不处于冷冻期
class Solution:
    def maxProfit(self, prices: List[int]) -> int:

        l = len(prices)
        if l == 0: return 0

        dp = [[0] * 3 for i in range(l)]
        dp[0][0] = -prices[0]

        for i in range(1, l):

            dp[i][0] = max(dp[i - 1][0], dp[i - 1][2] - prices[i])
            dp[i][1] = dp[i - 1][0] + prices[i] 
            dp[i][2] = max(dp[i - 1][1], dp[i - 1][2])
        
        return max(dp[l - 1][1], dp[l - 1][2])

posted on 2022-06-30 13:14  solvit  阅读(19)  评论(0编辑  收藏  举报

导航