(Leetcode)买股票的最佳时机
LeetCode上动态规划类的一个算法题,可能名字取的比较讨巧,刷的人挺多,学会了可以去股市上试试,效果怎么样,看文末的大结局
题目
这是个买卖彩票最佳时机的题目,也是一个系列,和之间的小偷有的一拼。
分析
题目已经明确只有一次买和一次卖的操作。
我们先从动态规划的角度来分析这个问题,动态规划最重要的一步就是状态的定义。
那么这道题的状态该咋么定义呢?
对于你来说,每天的状态只有两种: 持有股票 和 不持有股票,不会有第三种状态!
假设当前是第 n 天,那么,
问题来了,上面的 x 和 y 又是如何计算出来的?
针对持有股票的状态,又可以分为两种情况(假设当前第n天):
第 n-1 天就持有了,今天继续持有。(画外音:现在行情真差,我就不卖咋地)
第 n-1 天未持有,今天买入持有股票了。(画外音:这么低位我还不进场莫不是傻子)
根据这两种情况,我们就能取他们当中最大值作为第 n 天持有股票最大利益。伪代码如下,
对于未持有股票的状态, 也分为两种情况(假设当前第n天):
第 n-1 天就一直没买入持有股票,今天也不买入股票。(画外音:还没到最低点,急什么)
第 n-1 天已经买入股票了,今天卖出了股票。(画外音:都他妈到最高位了,该套现离场了)
同理,伪代码如下,
有人问,动态转移方程呢?讲完了啊,上面分析的就是动态规划第二步:状态转移方程。
实现
最终我们只需要获取 dp 中最后一次不持有状态下(卖了或者从头到尾都没买过)的值即可。下面是实现代码:
别样思路
还有一种更快速的解法。仔细观察的话,你可以发现他们之间存在一种特定关系,
我们就可以利用这个特点,
大结局
自从小明学会了这套算法,仿佛打开一片新天地,就此一头扎进股市无法自拔。功夫不负有心人,最终,他终于破产下矿挖煤了。
以上文章转载自大强子的公众号,如果文章对你有所帮助,点赞、转发、留言都是一种支持!
新朋友也希望关注下我的公众号,原创文章,每周周更~!
(Leetcode)买股票的最佳时机相关推荐
- LeetCode买股票的最佳时机C++版
题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出 ...
- LeetCode——第121题:买股票的最佳时机
题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票 ...
- My Eighty-sixth Page - 买股票的最佳时机Ⅲ - By Nicolas
这篇page是针对leetcode上的123.买股票的最佳时机Ⅲ所写的.小尼先简单的说明一下这道题的意思,就是我们给定一个数组,它的第i个元素表示的是一支股票在第i天的价格,我们需要设计一个算法表示我 ...
- 买股票的最佳时机(六种题解dp)
引言 买股票的最佳时机类的题目也是很经典的动态规划题目,出题人通过各种花里胡哨的买股票方法来考察(虐待)你,下面我们就开始看看一类的题目的各种花样: 买股票的最佳时机 给定一个数组 prices ,它 ...
- python购买股票_动态规划python实现-买股票的最佳时机
买股票的最佳时机(动态规划python实现) 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大 ...
- leetcode-java买股票的最佳时机
买股票的最佳时机 题目描述: 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润.注意你不能在买入股票前卖出股票.示例 1:输入: [7,1,5,3,6,4] ...
- leetcode_买股票的最佳时机----Python
题目名称深深地吸引了我 买股票的最佳时机1 题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的 ...
- 【Leetcode122 -买股票的最佳时机 II Best Time to Buy and Sell Stock II】(C语言)
目录 买股票的最佳时机II 测试单元 题目分析 标准版 巧妙版(简称投机取巧版) 买股票的最佳时机II 给定一个数组,它的第i个元素是一支给定股票第i天的价格. 设计一个算法来计算你所 ...
- 买股票的最佳时机--dp问题
dp问题,一般想再加入一个数的下一个状态的可能性 问题1:买股票的最佳时机1 给定一个数组 prices ,其中 prices[i] 表示股票第 i 天的价格. 在每一天,你可能会决定购买和/或出售股 ...
最新文章
- ​Nature子刊:中德合作发现玉米根系与根际有益微生物互惠关键生物学机制
- MVC之排球比赛计分程序 ——(二)架构概要设计
- 云转型缓慢并不甲骨文在中国区大裁员的唯一原因
- AI造福设计师:搭配色板这种苦差事交给GAN就好啦(教程)
- 以太网实习_从最初有从事IT的想法,到现在实习两个月的感受
- Airflow任务调度延时问题分析和优化
- Linux auditd rules generate 通用linux审计规则生成工具DevOps CI/CD持续集成交付 tools
- 洛谷——[USACO07OCT]Bessie‘s Secret Pasture S
- 2018-04-22jenkins+maven+svn环境搭建学习心得
- Control Flow - Containers
- 打造一流云计算机房,【迈向“双一流”】为科研插上云计算的“翅膀”
- Neural networks and deep learning C1总结(一)
- 各大快递电子面单---Api接口(顺丰、快递鸟、菜鸟)
- 云基础架构|部署分类|IaaS|PaaS|SaaS——浅析云计算架构
- 在网站中接入 客服QQ
- Android应用程序文件结构,Android项目文件及应用程序—目录结构详解
- 把Excel数据填充word模板生成多份word文档
- Scrapy爬虫爬取电影天堂
- Django之自定义 form 表单上传图片
- Data transformation R语言与python
热门文章
- 实战HTML5与CSS3 第一篇】初探水深,美丽的导航,绚丽的图片爆炸!!
- jQuery入门第三天
- ubuntu下chromium 安装flash player
- 没有找到MSVCP71.dll,迅雷5无法进行离线下载,P2P Seacher无法连入emule网络
- 与时共舞,力求变革【我眼中的戴尔转型】
- 我决定不能贱卖自己(2010年11月13日志)
- 解决“HTTP/1.1 405 Method not allowed”问题
- Poj(3615),Floyd,最大值中的最小值
- 解决 QtCreator 3.5(4.0)无法输入中文的问题
- JAVA的字符串拼接与性能