LeetCode上动态规划类的一个算法题,可能名字取的比较讨巧,刷的人挺多,学会了可以去股市上试试,效果怎么样,看文末的大结局

题目

这是个买卖彩票最佳时机的题目,也是一个系列,和之间的小偷有的一拼。

分析

题目已经明确只有一次买和一次卖的操作。

我们先从动态规划的角度来分析这个问题,动态规划最重要的一步就是状态的定义。

那么这道题的状态该咋么定义呢?

对于你来说,每天的状态只有两种: 持有股票 和 不持有股票,不会有第三种状态!

假设当前是第 n 天,那么,

问题来了,上面的 x 和 y 又是如何计算出来的?

针对持有股票的状态,又可以分为两种情况(假设当前第n天):

  • 第 n-1 天就持有了,今天继续持有。(画外音:现在行情真差,我就不卖咋地)

  • 第 n-1 天未持有,今天买入持有股票了。(画外音:这么低位我还不进场莫不是傻子)

根据这两种情况,我们就能取他们当中最大值作为第 n 天持有股票最大利益。伪代码如下,

对于未持有股票的状态, 也分为两种情况(假设当前第n天):

  • 第 n-1 天就一直没买入持有股票,今天也不买入股票。(画外音:还没到最低点,急什么)

  • 第 n-1 天已经买入股票了,今天卖出了股票。(画外音:都他妈到最高位了,该套现离场了)

同理,伪代码如下,

有人问,动态转移方程呢?讲完了啊,上面分析的就是动态规划第二步:状态转移方程。

实现

最终我们只需要获取 dp 中最后一次不持有状态下(卖了或者从头到尾都没买过)的值即可。下面是实现代码:

别样思路

还有一种更快速的解法。仔细观察的话,你可以发现他们之间存在一种特定关系,

我们就可以利用这个特点,

大结局

自从小明学会了这套算法,仿佛打开一片新天地,就此一头扎进股市无法自拔。功夫不负有心人,最终,他终于破产下矿挖煤了。

以上文章转载自大强子的公众号,如果文章对你有所帮助,点赞、转发、留言都是一种支持!

新朋友也希望关注下我的公众号,原创文章,每周周更~!

(Leetcode)买股票的最佳时机相关推荐

  1. LeetCode买股票的最佳时机C++版

    题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出 ...

  2. LeetCode——第121题:买股票的最佳时机

    题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股票 ...

  3. My Eighty-sixth Page - 买股票的最佳时机Ⅲ - By Nicolas

    这篇page是针对leetcode上的123.买股票的最佳时机Ⅲ所写的.小尼先简单的说明一下这道题的意思,就是我们给定一个数组,它的第i个元素表示的是一支股票在第i天的价格,我们需要设计一个算法表示我 ...

  4. 买股票的最佳时机(六种题解dp)

    引言 买股票的最佳时机类的题目也是很经典的动态规划题目,出题人通过各种花里胡哨的买股票方法来考察(虐待)你,下面我们就开始看看一类的题目的各种花样: 买股票的最佳时机 给定一个数组 prices ,它 ...

  5. python购买股票_动态规划python实现-买股票的最佳时机

    买股票的最佳时机(动态规划python实现) 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大 ...

  6. leetcode-java买股票的最佳时机

    买股票的最佳时机 题目描述: 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润.注意你不能在买入股票前卖出股票.示例 1:输入: [7,1,5,3,6,4] ...

  7. leetcode_买股票的最佳时机----Python

    题目名称深深地吸引了我 买股票的最佳时机1 题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的 ...

  8. 【Leetcode122 -买股票的最佳时机 II Best Time to Buy and Sell Stock II】(C语言)

    目录 ​​​​​​​ 买股票的最佳时机II 测试单元 题目分析 标准版 巧妙版(简称投机取巧版) 买股票的最佳时机II 给定一个数组,它的第i个元素是一支给定股票第i天的价格. 设计一个算法来计算你所 ...

  9. 买股票的最佳时机--dp问题

    dp问题,一般想再加入一个数的下一个状态的可能性 问题1:买股票的最佳时机1 给定一个数组 prices ,其中 prices[i] 表示股票第 i 天的价格. 在每一天,你可能会决定购买和/或出售股 ...

最新文章

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

热门文章

  1. 北京开源人linux运维实战
  2. 如何导出已有的谷歌插件,又如何把导出的插件安装到360浏览器中,又如何对插件小修小改?...
  3. 实现简单的ImageLoader
  4. UVA 12904 Load Balancing 暴力
  5. Myeclipse 安装所有插件
  6. IE Automation Tabs
  7. 让数据库支持SQL 2005 CLR 的必要条件
  8. ssh 免密登录并用脚本群起服务
  9. HT for Web的HTML5树组件延迟加载技术实现
  10. es 中关于 term,match, text, keyword