LeetCode714 买卖股票的最佳时机含手续费

LeetCode714 买卖股票的最佳时机含手续费

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

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

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

        for i in range(1, l):
            dp[i][0] = max(dp[i - 1][1] - prices[i], dp[i - 1][0])
            dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] + prices[i] - fee)
        
        return dp[l - 1][1]

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

导航