题目

给定一个整数数组 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;}
}

代码随想录贪心算法——买卖股票的最佳时机含手续费相关推荐

  1. 贪心/动态规划 - 买卖股票的最佳时机含手续费

    题目链接 贪心 每次只能交易一个股票,最优的选择就是低买高卖.不过每次交易股票都有一次手续费.可以把手续费算到买入的价格里.只要能收益就交易. 每次卖出一个股票就拥有了原价购买股票的机会.这样就能在具 ...

  2. _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 、714.买卖股票的最佳时机含手续费、968.监控二叉树

    _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 .714.买卖股票的最佳时机含手续费.968.监控二叉树 题目列表 738.单调递增的数字 714.买卖股票 ...

  3. 代码随想录算法训练营第三十七天 | 738.单调递增的数字,714. 买卖股票的最佳时机含手续费,968.监控二叉树,总结

    Day36 周日休息~ 一.参考资料 单调递增的数字 https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9 ...

  4. 代码随想录算法训练营第37天|738. 单调递增的数字,714. 买卖股票的最佳时机含手续费,968. 监控二叉树

    Day 37 738. 单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string strN = to_st ...

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

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

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

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

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

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

  8. 算法训练第五十一天 | 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费、股票问题总结

    动态规划part12 309.最佳买卖股票时机含冷冻期 题目描述 思路 总结 714.买卖股票的最佳时机含手续费 题目描述 思路 股票问题总结 309.最佳买卖股票时机含冷冻期 题目链接:309.最佳 ...

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

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

最新文章

  1. Nature Protocols:整合宏基因组、代谢组和表型分析的的计算框架
  2. 配置文件没有关闭保护模式_配置文件:PS自带的海量滤镜 | 照片调色宝典13
  3. linux 其他常用命令
  4. 拆分文件_Word按页拆分文件
  5. 【Opencv实战】图像修复神技?看我一秒修复家里的老照片
  6. Android实战处理带+号的电话号码在Arabic语言中的正确显示
  7. .NET Core 3.0:System.Data的变化
  8. pca百分比取多少比较好_母亲节给妈妈发多少红包比较好合适 母亲节红包吉利数字含义...
  9. 干货—MySQL常见的面试题+索引原理分析!
  10. 数据权限设计思路_权限设计数据权限
  11. 语音识别(ASR) 阿里云
  12. NOIP2016普及组复赛全国一等奖名单及排名(1~745名)
  13. bios显示计算机故障,笔记本电脑BIOS出现故障怎么办 三种常见BIOS故障解决方案...
  14. KDEUnivariate.fit 参数详解
  15. 千古以來:卍佛一心)悟道真机(转载)
  16. ASCII码对照表【2022年汇总】
  17. 服务器应用程序不可用的问题
  18. Java—求绝对值(选择结构)
  19. 蓝屏 0x00000001 问题怎么解决?
  20. MATLAB函数——lowpass

热门文章

  1. 计算机图形学 使用OpenGL的场景建模
  2. 超级解霸, 远去的豪杰
  3. 医院计算机系统日常维护记录表,医院计算机信息管理系统维护措施
  4. 海盗分椰子c语言编程,水手分椰子——迭代法、递归解题(示例代码)
  5. jquery实现轮播图,可点击左右切换
  6. 软件:IIS上配置CGI
  7. html 添加physical,布局规划-1 在设计中添加physical only cells
  8. 远程直播服务器连接失败,哔哩哔哩直播姬连接失败如何解决 直播姬连接失败解决方法攻略大全...
  9. 微信小程序----wx.openLocation(OBJECT) 使用微信内置地图查看位置
  10. 晶体三极管的放大原理