(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 天的价格. 在每一天,你可能会决定购买和/或出售股 ...
最新文章
- python3的星期函数_calendar在python3时间中有哪些常用函数?怎么用?
- 淺談Raid Cache Memory上應用的問題和實踐
- 什么是脱离文档流?什么是文档流?
- java enum 关联_Java:如果EnUM常量在本质上是静态的,那么它如何可以拥有与其相关联的构造函数和方法...
- Lambda表达式练习3【应用】
- why my CREATE_OW will not generate OSSET entry in OB buffer
- Linux学习笔记-线程的自然终止
- VEGA:诺亚AutoML高性能开源算法集简介
- 雅克德罗机器人_什么腕表配饰值得买 带货明星们都已经帮你选好了
- 软考:软件设计师(历年真题汇总)|希赛网
- Windows中内存泄漏检测工具vld简介及使用
- 电脑网页截长屏最简单的方法
- HEG运行错误:GetBeginAndEndLocs
- DNSPod十问纪中展:从摇滚文青到科学队长
- 继戴姆勒之后 德国公司Bury就汽车通信相关专利授权投诉诺基亚
- siri打电话功能测试用例编写
- 新年伊始 沐圣moolsun强势来袭
- 省赛培训-RHEL6-v3.0
- 如何使用OpenCV的去除自动红眼
- 请编写一个个人所税计算器,用户输入应发工资薪金所得、五险一金金额和个税免征额,输出应缴税款和实发工资,结果保留小数点后两位。当输入数字小于0或等于0时,输出“error”。