LintCode:1000. 买卖股票的最佳时机含手续费
描述
现在给出一个数组,包含一系列价格,其中第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. 买卖股票的最佳时机含手续费相关推荐
- 代码随想录算法训练营第三十七天 | 738.单调递增的数字,714. 买卖股票的最佳时机含手续费,968.监控二叉树,总结
Day36 周日休息~ 一.参考资料 单调递增的数字 https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9 ...
- _32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 、714.买卖股票的最佳时机含手续费、968.监控二叉树
_32LeetCode代码随想录算法训练营第三十二天-贪心算法 | 738.单调递增的数字 .714.买卖股票的最佳时机含手续费.968.监控二叉树 题目列表 738.单调递增的数字 714.买卖股票 ...
- 738.单调递增的数字,714. 买卖股票的最佳时机含手续费,968.监控二叉树
738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的. 给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 ...
- 【LeetCode】买卖股票的最佳时机含手续费 [M](动态规划)
714. 买卖股票的最佳时机含手续费 - 力扣(LeetCode) 一.题目 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用 ...
- 714. 买卖股票的最佳时机含手续费(CPP)
714. 买卖股票的最佳时机含手续费 给定一个整数数组 pricespricesprices,其中第 iii 个元素代表了第 iii 天的股票价格 :非负整数 feefeefee 代表了交易股票的手续 ...
- LeetCode714:买卖股票的最佳时机含手续费
该题目和以下题目相关联,感兴趣的小伙伴可直接点击下面的链接! LeetCode121:买卖股票的最佳时机 LeetCode122:买卖股票的最佳时机 II LeetCode123:买卖股票的最佳时机 ...
- LeetCode 714 买卖股票的最佳时机含手续费
714. 买卖股票的最佳时机含手续费 题目 思路 过一遍,记录第i天是否买入和卖出的最值. 代码 class Solution {public:int maxProfit(vector<int& ...
- 【算法】贪心算法:LeetCode 714 买卖股票的最佳时机含手续费 、LeetCode 968 监控二叉树
LeetCode 714 买卖股票的最佳时机含手续费 (中等) 题目 描述 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 :整数 fee 代表了交易股票的手续费用. 你 ...
- Leetcode刷题笔记 714. 买卖股票的最佳时机含手续费
714. 买卖股票的最佳时机含手续费 时间:2020年12月17日 知识点:动态规划 题目链接:https://leetcode-cn.com/problems/best-time-to-buy-an ...
- 【LeetCode每日一题】——714.买卖股票的最佳时机含手续费
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[解题思路] 七[题目提示] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 贪心算法 二[ ...
最新文章
- android 官方DrawerLayout的介绍和使用
- GC算法 垃圾收集器
- oracle查看session阻塞,oracle查询blocking session阻塞情况
- 《Java并发编程实战》读书笔记一:基础知识
- 返回顶部php代码,页面按需返回顶部代码及注释说明
- 3DGIS城市规划信息管理系统
- Vscode——内置浏览器
- python批量自动填写网页表单_Python爬虫自动填写调查表
- 国外PHP免费空间速度评测
- PHP 开源 ERP 系统 Discover
- mysql基于PHP下的大学生校园交流论坛的设计与实现 毕业设计源码101634
- 关于文件关联的图标不能正常显示
- IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)
- 如何下载头歌平台在线实验闯关中的文件到本地进行查看
- Centos7 源码安装 Apache
- 下肢静脉曲张的病因具体有哪些?
- h3c imc-dig 7 linux,H3C iMC iLP安装指导-7.0-5PW100
- 埃森哲java笔试题_埃森哲的笔试经验
- 基于ZigBee和STM32的智能家居控制系统的设计与实现
- 删除一个字符串中指定位置上的字符