代码随想录贪心算法——买卖股票的最佳时机含手续费
题目
给定一个整数数组 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
思路
本题相对于买卖股票的最佳时机||多添加了一个手续费的条件
买卖股票的最佳时机||中使用贪心不需要关心具体什么时候卖,只需要收集每天的正利润,最后得到的就是最大利润了
在本题中,因为有手续费的存在,所以需要考虑什么时候买卖了,因为计算所获得的利润,需要考虑利润可能不足以支付手续费的问题
使用贪心策略的话,就是最低值买,最高值(如果算上手续费还盈利)就卖
**买入日期:**遇到更低点就记录一下
**卖出日期:**只要当前价格大于(最低价格+手续费),就可以获得利润,具体哪一天的话,就是连续收获利润区间里的最后一天
收获利润操作的时候分成三种情况:
- 收获利润的这里天并不是收获利润区间的最后一天,继续收获利润
- 前一天是收获利润区间的最后一天(今天开始重新记录最小价格)
- 不作操作,保持原有状态
PS:本题贪心的思路比较难,DP才是常规做法,这里主要是拓展一下贪心的思路
java代码如下:
class Solution {public int maxProfit(int[] prices, int fee){int buy = fee + prices[0];//记录最小价格(包含手续费)int sum = 0;for(int p : prices){if(p + fee < buy){//找最小价格(包含手续费)buy = p + fee;//更新最小价格(含手续费)}else if (p > buy){//如果当前价格大于最小价格(含手续费)sum += p - buy;//累计利润buy = p;//更新当前最小价格}}return sum;}
}
代码随想录贪心算法——买卖股票的最佳时机含手续费相关推荐
- 贪心/动态规划 - 买卖股票的最佳时机含手续费
题目链接 贪心 每次只能交易一个股票,最优的选择就是低买高卖.不过每次交易股票都有一次手续费.可以把手续费算到买入的价格里.只要能收益就交易. 每次卖出一个股票就拥有了原价购买股票的机会.这样就能在具 ...
- _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 、714.买卖股票的最佳时机含手续费、968.监控二叉树
_32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 .714.买卖股票的最佳时机含手续费.968.监控二叉树 题目列表 738.单调递增的数字 714.买卖股票 ...
- 代码随想录算法训练营第三十七天 | 738.单调递增的数字,714. 买卖股票的最佳时机含手续费,968.监控二叉树,总结
Day36 周日休息~ 一.参考资料 单调递增的数字 https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9 ...
- 代码随想录算法训练营第37天|738. 单调递增的数字,714. 买卖股票的最佳时机含手续费,968. 监控二叉树
Day 37 738. 单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string strN = to_st ...
- 【贪心算法】Leetcode 714. 买卖股票的最佳时机含手续费
[贪心算法]Leetcode 714. 买卖股票的最佳时机含手续费 题目 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. ...
- 【算法】贪心算法:LeetCode 714 买卖股票的最佳时机含手续费 、LeetCode 968 监控二叉树
LeetCode 714 买卖股票的最佳时机含手续费 (中等) 题目 描述 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你 ...
- 力扣算法JS LC [714. 买卖股票的最佳时机含手续费] LC [968. 监控二叉树]
LC 714. 买卖股票的最佳时机含手续费 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你可以无限次地完成交易,但是你 ...
- 算法训练第五十一天 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费、股票问题总结
动态规划part12 309.最佳买卖股票时机含冷冻期 题目描述 思路 总结 714.买卖股票的最佳时机含手续费 题目描述 思路 股票问题总结 309.最佳买卖股票时机含冷冻期 题目链接:309.最佳 ...
- 【LeetCode每日一题】——714.买卖股票的最佳时机含手续费
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 贪心算法 二[ ...
最新文章
- Nature Protocols:整合宏基因组、代谢组和表型分析的的计算框架
- 配置文件没有关闭保护模式_配置文件:PS自带的海量滤镜 | 照片调色宝典13
- linux 其他常用命令
- 拆分文件_Word按页拆分文件
- 【Opencv实战】图像修复神技?看我一秒修复家里的老照片
- Android实战处理带+号的电话号码在Arabic语言中的正确显示
- .NET Core 3.0:System.Data的变化
- pca百分比取多少比较好_母亲节给妈妈发多少红包比较好合适 母亲节红包吉利数字含义...
- 干货—MySQL常见的面试题+索引原理分析!
- 数据权限设计思路_权限设计数据权限
- 语音识别(ASR) 阿里云
- NOIP2016普及组复赛全国一等奖名单及排名(1~745名)
- bios显示计算机故障,笔记本电脑BIOS出现故障怎么办 三种常见BIOS故障解决方案...
- KDEUnivariate.fit 参数详解
- 千古以來:卍佛一心)悟道真机(转载)
- ASCII码对照表【2022年汇总】
- 服务器应用程序不可用的问题
- Java—求绝对值(选择结构)
- 蓝屏 0x00000001 问题怎么解决?
- MATLAB函数——lowpass
热门文章
- 计算机图形学 使用OpenGL的场景建模
- 超级解霸, 远去的豪杰
- 医院计算机系统日常维护记录表,医院计算机信息管理系统维护措施
- 海盗分椰子c语言编程,水手分椰子——迭代法、递归解题(示例代码)
- jquery实现轮播图,可点击左右切换
- 软件:IIS上配置CGI
- html 添加physical,布局规划-1 在设计中添加physical only cells
- 远程直播服务器连接失败,哔哩哔哩直播姬连接失败如何解决 直播姬连接失败解决方法攻略大全...
- 微信小程序----wx.openLocation(OBJECT) 使用微信内置地图查看位置
- 晶体三极管的放大原理