leetcode 714 股票手续费问题

使用动态规划方法,dp数组的状态和之前多次买卖的状态数量一样,一种是天数,一种是持有还是不持有,当股票卖出(买入也可以)需要减去手续费用,注意这个手续费用只能计算一次。

class Solution:
    def maxProfit(self, prices: List[int], fee: int) -> int:

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

        return dp[len(prices)-1][0]

空间优化

class Solution:
    def maxProfit(self, prices: List[int], fee: int) -> int:


        sell=0
        buy=-prices[0]
        for i in range(1,len(prices)):
            buy=max(buy,sell-prices[i])

            sell=max(sell,buy+prices[i]-fee)


        return sell
动态规划 文章被收录于专栏

给自己归纳复习的一些做过的题目,写得很乱,大家可以按照这个题目去针对性做题,确实会有提升!

全部评论

相关推荐

2024-12-21 10:42
已编辑
江西软件职业技术大学 Java
新宿站不停:该提升学历就提升学历,菜了就多练。没事找牛马公司虐自己是吧? 谁没事说自己“经验少”,这不自己把自己塞剎鼻hr嘴里找🐴吗
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务