\(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]