描述

现在给出一个数组,包含一系列价格,其中第i个元素是一支股票在第i天的价格;一个非负数fee代表了手续费。

你可以根据需要任意地进行交易,但是每次交易都必须付手续费。每次购买不能超过1股(必须在再次购买的之前卖出股票)。

返回可以获得的最大利润。

dalao思路:也有动态规划的解法,但这里使用贪心的解法

选择的关键是找到一个最大后是不是能够卖掉stock,重新开始寻找买入机会。比如序列1 3 2 8,如果发现2小于3就完成交易买1卖3,此时由于fee=2,(3-1-fee)+(8-2-fee)<(8-1-fee),所以说明卖早了,令max是当前最大price,当(max-price[i]>=fee)时可以在max处卖出,且不会存在卖早的情况,再从i开始重新寻找买入机会。

 public int maxProfit(int[] prices, int fee) {// write your code here//转自https://blog.csdn.net/zw159357/article/details/82260077int n=prices.length;if(n<=1)return 0;int p=0,curP=0;int minP=prices[0],maxP=prices[0];for(int i=1;i<n;i++){minP=Math.min(minP,prices[i]);maxP=Math.max(maxP,prices[i]);curP=Math.max(curP,prices[i]-minP-fee);if(maxP-prices[i]>=fee){p+=curP;curP=0;maxP=prices[i];minP=prices[i];}}return p+curP;}

summary:1、贪心策略就是寻找当前最佳买卖时机,就是判断一段时间内的所有股票,是进行一次交易的利润大,还是进行两次(这里可以由两次推到多次)的利润大,即max-price[i]>=fee,之前一直在想这个判断条件怎么推出来的,用纸写写发现由简单的数学逻辑推导出来。(b-a-fee + d-c-fee > d-a-fee)也可以理解为当maxP比price[i]赚的多于手续费时,就可以卖出,否则就不值得卖,而curp一直对应于maxP - minP - fee

2、多用数学工具/逻辑思考问题

LintCode:1000. 买卖股票的最佳时机含手续费相关推荐

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

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

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

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

  3. 738.单调递增的数字,714. 买卖股票的最佳时机含手续费,968.监控二叉树

    738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的. 给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 ...

  4. 【LeetCode】买卖股票的最佳时机含手续费 [M](动态规划)

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

  5. 714. 买卖股票的最佳时机含手续费(CPP)

    714. 买卖股票的最佳时机含手续费 给定一个整数数组 pricespricesprices,其中第 iii 个元素代表了第 iii 天的股票价格 :非负整数 feefeefee 代表了交易股票的手续 ...

  6. LeetCode714:买卖股票的最佳时机含手续费

    该题目和以下题目相关联,感兴趣的小伙伴可直接点击下面的链接! LeetCode121:买卖股票的最佳时机 LeetCode122:买卖股票的最佳时机 II LeetCode123:买卖股票的最佳时机 ...

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

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

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

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

  9. Leetcode刷题笔记 714. 买卖股票的最佳时机含手续费

    714. 买卖股票的最佳时机含手续费 时间:2020年12月17日 知识点:动态规划 题目链接:https://leetcode-cn.com/problems/best-time-to-buy-an ...

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

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

最新文章

  1. android 官方DrawerLayout的介绍和使用
  2. GC算法 垃圾收集器
  3. oracle查看session阻塞,oracle查询blocking session阻塞情况
  4. 《Java并发编程实战》读书笔记一:基础知识
  5. 返回顶部php代码,页面按需返回顶部代码及注释说明
  6. 3DGIS城市规划信息管理系统
  7. Vscode——内置浏览器
  8. python批量自动填写网页表单_Python爬虫自动填写调查表
  9. 国外PHP免费空间速度评测
  10. PHP 开源 ERP 系统 Discover
  11. mysql基于PHP下的大学生校园交流论坛的设计与实现 毕业设计源码101634
  12. 关于文件关联的图标不能正常显示
  13. IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)
  14. 如何下载头歌平台在线实验闯关中的文件到本地进行查看
  15. Centos7 源码安装 Apache
  16. 下肢静脉曲张的病因具体有哪些?
  17. h3c imc-dig 7 linux,H3C iMC iLP安装指导-7.0-5PW100
  18. 埃森哲java笔试题_埃森哲的笔试经验
  19. 基于ZigBee和STM32的智能家居控制系统的设计与实现
  20. 删除一个字符串中指定位置上的字符

热门文章

  1. Spring Cloud CAP 简述
  2. Microsoft Office下载链接
  3. 数学分析 函数项级数(第13章)
  4. 腾讯java校招,09.26 腾讯校招前端一面经历
  5. oracle 批量修改同义词,Oracle批量创建同义词
  6. 页面中设置IE浏览器的文档模式
  7. 暑假爆肝整理这篇python基础教程,全是干货,学完基础就过关(收藏加好评吧)
  8. 防火门行业研究及十四五规划分析报告
  9. word论文页码排版
  10. 从有序数组中查找数字的4种方法/二分查找/二分查找的函数递归/一一对比/一一对比的递归