题目描述

给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。

你可以无限次地完成交易,但是你每次交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。

返回获得利润的最大值。

示例1

        输入:
prices = [1, 3, 2, 8, 4, 9], fee = 2
输出:
8
解释:
能够达到的最大利润:
在此处买入 prices[0] = 1
在此处卖出 prices[3] = 8
在此处买入 prices[4] = 4
在此处卖出 prices[5] = 9
总利润: ((8 - 1) - 2) + ((9 - 4) - 2) = 8.

提示

  • 0 < prices.length <= 50000.
  • 0 < prices[i] < 50000.
  • 0 <= fee < 50000.

题解

这是 【买卖股票的最佳时机】 系列题目的第五题。

这题其实就是在系列题目第二题基础上加了个手续费,也就是无限次买卖股票,但是每次卖的时候都得交一笔手续费。

这时候就不能和第二题一样,每次连续上升子区间都买卖一次了,因为如果买卖一次都不够交手续费的话,就不能进行买卖。或者一段连续下降子区间的差值小于手续费,那么就得把这段下降子区间也包含进去,前后只卖买一次。

所以我们换个思路,还是沿用第四题的动态规划思路。令 为第 只股票之前(包含)买卖(最后一次操作是买)可以获得的最大利润, 为第 只股票之前(包含)买卖(最后一次操作是卖)可以获得的最大利润。那么类似的有如下转移方程:

初始情况就是

此外这里还可以优化去掉一个维度,因为每个时刻状态只与前一个时刻有关。

时间复杂度是

代码

python

        class Solution:def maxProfit(self, prices: List[int], fee: int) -> int:dp0, dp1 = -prices[0], 0for p in prices[1:]:dp1 = max(dp1, dp0+p-fee)dp0 = max(dp0, dp1-p)return dp1

每日算法系列【LeetCode 714】买卖股票的最佳时机含手续费相关推荐

  1. 【贪心算法】Leetcode 714. 买卖股票的最佳时机含手续费

    [贪心算法]Leetcode 714. 买卖股票的最佳时机含手续费 题目 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. ...

  2. 【算法】贪心算法:LeetCode 714 买卖股票的最佳时机含手续费 、LeetCode 968 监控二叉树

    LeetCode 714 买卖股票的最佳时机含手续费 (中等) 题目 描述 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你 ...

  3. 【LeetCode每日一题】——714.买卖股票的最佳时机含手续费

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 贪心算法 二[ ...

  4. leetcode 714 买卖股票的最佳时机含手续费-动态规划(中等)

    714 买卖股票的最佳时机含手续费-动态规划(中等) 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :非负整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交 ...

  5. 力扣算法JS LC [714. 买卖股票的最佳时机含手续费] LC [968. 监控二叉树]

    LC 714. 买卖股票的最佳时机含手续费 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你 ...

  6. LeetCode 714 买卖股票的最佳时机含手续费

    714. 买卖股票的最佳时机含手续费 题目 思路 过一遍,记录第i天是否买入和卖出的最值. 代码 class Solution {public:int maxProfit(vector<int& ...

  7. LeetCode·714.买卖股票的最佳时机含手续费·贪心

    作者:xun-ge-v 链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/sol ...

  8. 110. Leetcode 714. 买卖股票的最佳时机含手续费 (动态规划-股票交易)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i]是一个长度为len(prices)的一维数组,表示的是在第i天持有股票 步骤二.推断状态方程: 第i天不持有股票,即dp[i][0], 那么两个状 ...

  9. leetcode 714. 买卖股票的最佳时机含手续费(dp)

    给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :非负整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都需要付手续费.如果你已经购买了一个 ...

  10. leetcode 714. 买卖股票的最佳时机含手续费(java)

    贪心!!! class Solution {public int maxProfit(int[] prices, int fee) {int n = prices.length;int buy = p ...

最新文章

  1. 北大校友“炼丹”分享:OpenAI如何训练千亿级模型?
  2. jQuer or js 插件aptana studio 3.4.0)教你玩转eclipse配置(全世
  3. 线程的run()方法带参情况
  4. 洛谷 深基 第1部分 语言入门 第5章 数组与数据批量存储
  5. opencv 手册_有兴趣吗?程序员分手手册,教你如何恢复单身
  6. web前端技术基础课程讲解之浅谈对soket的理解
  7. 问题 D: 去行首行尾的空白符
  8. 【转】删除数据库中重复数据的几个方法
  9. Java进程中的堆和栈_对于JVM,你就只知道堆和栈吗?
  10. 《企业IT架构转型之道》边读边想——共享服务中心的建设原则
  11. 设计模式-05.建造者模式与模板方法模式比较
  12. nohup与前台后台操作
  13. 清除dell服务器面板告警信息,DELL面板告警日志
  14. idea配置阿里云镜像失败解决
  15. Java使用模板导出带图片word文档
  16. scratch项目:自制电子乐器(Scratch声音类积木的应用/scratch的声音魔法)
  17. java+英尺英寸,以英尺和英寸显示英尺的小数点(javascript)
  18. html网上书店首页设计,毕业论文(设计)基于HTML5的网络书店系统 (40页)-原创力文档...
  19. MapGis 二次开发 注册DLL失败问题
  20. 设置修改Tomcat的UTF-8编码

热门文章

  1. 【COCOS2D-HTML5 开发之三】演示样例项目附源代码及执行的GIF效果图
  2. 【FIRST USE】第一次用git把代码上传到github
  3. 面向对象程序设计之封装性、继承性、多态性
  4. Sublime Text3之安裝Emmet及使用技巧
  5. document.execCommand
  6. 使用HttpWebRequest自动更新客户端应用程序[转]
  7. C#中yield关键字及注意事项
  8. SharePoint 备忘录(一)
  9. (解决MATLAB的使用问题)避免每次双击.m文件都会自动打开一个matlab程序
  10. libevhtp介绍与demo构建