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

class Solution:
    def maxProfit(self, prices: List[int], fee: int) -> int:
        f = [0,-prices[0]]#不持股,持股
        for i in range(2,len(prices)+1):
            f[0] = max(f[0],f[1]+prices[i-1]-fee)#不持股的状态:i不持股,i-1买入i卖出
            f[1] = max(f[1],f[0]-prices[i-1])#持股的状态:i持股,i-1不持股i买入
        return f[0]

还是动态规划的思想
初始化的-prices[0]为买入股票时花掉的钱,所以为负
每次进行i这一天的不持股或持股的计算,相当于是对前一天的买入或卖出反悔,找到f[0]不持股时手里钱最多和f[1]持股时手里钱最多的状态
最后肯定是不持股时钱最多,返回f[0]
这类股票问题的核心公式就是
前i天的最大收益 = max{前i-1天的最大收益,第i天的价格-前i-1天中的最小价格}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值