每日算法系列【LeetCode 714】买卖股票的最佳时机含手续费
题目描述
给定一个整数数组 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】买卖股票的最佳时机含手续费相关推荐
- 【贪心算法】Leetcode 714. 买卖股票的最佳时机含手续费
[贪心算法]Leetcode 714. 买卖股票的最佳时机含手续费 题目 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. ...
- 【算法】贪心算法:LeetCode 714 买卖股票的最佳时机含手续费 、LeetCode 968 监控二叉树
LeetCode 714 买卖股票的最佳时机含手续费 (中等) 题目 描述 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你 ...
- 【LeetCode每日一题】——714.买卖股票的最佳时机含手续费
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 贪心算法 二[ ...
- leetcode 714 买卖股票的最佳时机含手续费-动态规划(中等)
714 买卖股票的最佳时机含手续费-动态规划(中等) 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :非负整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交 ...
- 力扣算法JS LC [714. 买卖股票的最佳时机含手续费] LC [968. 监控二叉树]
LC 714. 买卖股票的最佳时机含手续费 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你 ...
- LeetCode 714 买卖股票的最佳时机含手续费
714. 买卖股票的最佳时机含手续费 题目 思路 过一遍,记录第i天是否买入和卖出的最值. 代码 class Solution {public:int maxProfit(vector<int& ...
- LeetCode·714.买卖股票的最佳时机含手续费·贪心
作者:xun-ge-v 链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/sol ...
- 110. Leetcode 714. 买卖股票的最佳时机含手续费 (动态规划-股票交易)
步骤一.确定状态: 确定dp数组及下标含义 dp[i]是一个长度为len(prices)的一维数组,表示的是在第i天持有股票 步骤二.推断状态方程: 第i天不持有股票,即dp[i][0], 那么两个状 ...
- leetcode 714. 买卖股票的最佳时机含手续费(dp)
给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :非负整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你每笔交易都需要付手续费.如果你已经购买了一个 ...
- leetcode 714. 买卖股票的最佳时机含手续费(java)
贪心!!! class Solution {public int maxProfit(int[] prices, int fee) {int n = prices.length;int buy = p ...
最新文章
- 北大校友“炼丹”分享:OpenAI如何训练千亿级模型?
- jQuer or js 插件aptana studio 3.4.0)教你玩转eclipse配置(全世
- 线程的run()方法带参情况
- 洛谷 深基 第1部分 语言入门 第5章 数组与数据批量存储
- opencv 手册_有兴趣吗?程序员分手手册,教你如何恢复单身
- web前端技术基础课程讲解之浅谈对soket的理解
- 问题 D: 去行首行尾的空白符
- 【转】删除数据库中重复数据的几个方法
- Java进程中的堆和栈_对于JVM,你就只知道堆和栈吗?
- 《企业IT架构转型之道》边读边想——共享服务中心的建设原则
- 设计模式-05.建造者模式与模板方法模式比较
- nohup与前台后台操作
- 清除dell服务器面板告警信息,DELL面板告警日志
- idea配置阿里云镜像失败解决
- Java使用模板导出带图片word文档
- scratch项目:自制电子乐器(Scratch声音类积木的应用/scratch的声音魔法)
- java+英尺英寸,以英尺和英寸显示英尺的小数点(javascript)
- html网上书店首页设计,毕业论文(设计)基于HTML5的网络书店系统 (40页)-原创力文档...
- MapGis 二次开发 注册DLL失败问题
- 设置修改Tomcat的UTF-8编码