Day 44 | 714.買賣股票的最佳時機含手續費

forrestr發表於2024-07-09

714.買賣股票的最佳時機含手續費

給定一個整數陣列 prices,其中第 i 個元素代表了第 i 天的股票價格 ;非負整數 fee 代表了交易股票的手續費用。

你可以無限次地完成交易,但是你每筆交易都需要付手續費。如果你已經購買了一個股票,在賣出它之前你就不能再繼續購買股票了。

返回獲得利潤的最大值。

注意:這裡的一筆交易指買入持有並賣出股票的整個過程,每筆交易你只需要為支付一次手續費。

示例 1:

輸入: prices = [1, 3, 2, 8, 4, 9], fee = 2
輸出: 8

思考

跟上一題的區別是多了個買賣手續費,用dp來做比較簡單,程式碼與122基本一樣,只是多減了個手續費。

class Solution:
    def maxProfit(self, prices: List[int], fee: int) -> int:
        # dp[i][0] 第i天持有股票時的現金
        # dp[i][1] 第i天不持有股票的現金
        dp = [[0] * 2 for _ in range(len(prices))]
        dp[0][0] = -prices[0]
        dp[0][1] = 0
        for i in range(1,len(prices)):
            #可以每天交易
            dp[i][0] = max(dp[i-1][0],dp[i-1][1]-prices[i])
            dp[i][1] = max(dp[i-1][1],prices[i]+dp[i-1][0]-fee)
        return dp[len(prices)-1][1]

相關文章