https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/

题目要求

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

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

返回获得利润的最大值。

注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。

贪心

class Solution {public int maxProfit(int[] prices, int fee) {int n = prices.length;int[] value = new int[n - 1];for (int i = 1; i < n; i++) {value[i - 1] = prices[i] - prices[i - 1];}int len = value.length;int cur = 0, res = 0;for (int i = 0; i < len; i++) {if (value[i] > 0) cur += value[i];else {res += Math.max(cur - fee, 0);cur = 0;}}return res;}
}
  • 贪心的思想在这里更难以理解一些;
  • 首先我们遍历数组的时候,是需要记录下当前时刻之前的最小价格买入股,以保证我手里的股票是以最低价格买入的。
  • 其次,当遇到本次股票可以让我获利时,我就收割本次利润,并且把购买成本换成本次股票价钱。关键点来了,为什么要有把购买成本换成本次股票价钱这一步操作呢,因为本次利润只是收割,我并没有真正的把我手上的股票的卖出去(如果卖出去,那成本应该重置为0,并且你下一次再想买进的话就需要再付一次手续费了)。
  • 为什么这样做呢,拿prices = [1,3,7,5,10,3], fee = 3 举例。显而易见我们应该在第一天买入保证我的最低成本为1+3=4,然后我在遍历到7的时候应该卖出去了,因为它可以让我获得7-4=3的利润,但是此时要不要真的卖呢,我不知道。再往后遍历,遇到了10。两种情况
    • 我在7的时候真卖了 那我就需要在5的时候购入成本为5+3=8
    • 我在7的时候假卖,成本为7,(前面说了假卖的时候要把成本换成本次价钱)。也可以理解为假卖就是没卖,成本为1+3=4,利润为10-4=6。 显而易见我假卖的话可以收获更多,这就是贪心

714. 买卖股票的最佳时机含手续费+贪心相关推荐

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

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

  2. 力扣刷题day32|738单调递增的数字、714买卖股票的最佳时机含手续费、968监控二叉树

    文章目录 738. 单调递增的数字 思路 难点:遍历顺序 难点:设置flag 714. 买卖股票的最佳时机含手续费 贪心思路 难点 968. 监控二叉树 思路 难点:如何隔两个节点放一个摄像头 738 ...

  3. 力扣刷题day44|309最佳买卖股票时机含冷冻期、714买卖股票的最佳时机含手续费

    文章目录 309. 最佳买卖股票时机含冷冻期 思路 动态规划五部曲 714. 买卖股票的最佳时机含手续费 贪心思路 难点 动态规划思路 动态规划五部曲 309. 最佳买卖股票时机含冷冻期 力扣题目链接 ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Xamarin.Forms探索--使用 Xamarin.Forms 来创建跨平台的用户界面
  2. ansible-playbook之条件判断
  3. window下pip 用不了的一种解决办法
  4. 如何使div像星星一样,简易demo,授人以鱼,自行更改完善
  5. Java IO的RandomAccessFile的使用(转)
  6. 交换二叉树的每个节点的左右子树
  7. 大陆集团ADAS招聘丨老司机带你现场体验自动驾驶的快感
  8. AI医疗--概念,应用场景及现状解析
  9. 极速PDF编辑器提示缺少字体如何解决
  10. JFlash烧录SPI FLASH
  11. 计算机标点符号怎么切换,标点符号转换键是什么?
  12. AI Gossip | 八卦人工智能的前世今生
  13. 天九共享集团:为创业者提供坚实的信用背书
  14. unittest的运行方式
  15. 红外测试操作步骤_近红外光谱仪操作步骤_近红外光谱仪波长范围
  16. C ++程序将给定的英寸转换为等效的码,英尺和英寸
  17. 淘宝二面试常见问题的答案来了,你看了吗?(二面及答案)
  18. 统计学的Python实现-010:四分位距
  19. 服务发现Discovery
  20. 开机自动拨号,断线重连,并且动态解析dns记录,java版

热门文章

  1. 三步解决:Call exception, tries=10, retries=35, started=48231 ms ago, cancelled=false, msg=
  2. E2SRI: Learning to Super-Resolve Intensity Images from Events
  3. vs2010+proe二次开发 环境配置
  4. C#上传文件到共享文件夹
  5. 用ad2018绘制51单片机最小系统原理图和pcb
  6. HTML5 布加迪威龙跑车自动化制造过程模拟
  7. web前端技术——二、表格与框架
  8. CocosCreator集成TensorFlow实现手写识别
  9. 网易云音乐批量下载器v1.1软件介绍(修正版)
  10. 51单片机:自动避障红外小车代码