题目详见 714.买卖股票的最佳时机含手续费 题目难点 买入和卖出时机的位置怎么算 解决方案 买入点:最低价格就行卖出点:例如1、6、8 fee=2,很明显在1买入,在8卖出,那怎么用算法来判断呢,我们可以在6的时候收获一次利润6-1-fee,然后让minprice等于6-fee,这样第二次利润就是8-(6-fee),将所以利润加起来就是总利润,记住在一个买入卖出仅收一次手续费 ,这就是为什么要minprice = 6- fee Talk is cheap,show me the code class Solution: def maxProfit(self, prices: List[int], fee: int) -> int: minprices = prices[0] result = 0 for i in range(1,len(prices)): if minprices > prices[i]:# 找到最低价 minprices = prices[i] elif minprices <= prices[i] and minprices+ fee >= prices[i]: # 如果当前价格大于最小价格,但是 当前价格 <= 最低价格 + fee # 我们就不“卖” continue else: # 例如 1 6 8 # 我们在6 这里收一次利润 然后让最低价格==6 再在8这里收一次利润 # 两次利润加起来 就是最大利润 但是 “记住只能收一次手续费” result += prices[i] - minprices - fee # -fee就代表只收一次手续费,把minprice带入上式 minprices = prices[i] - fee return result