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. ​Nature子刊:中德合作发现玉米根系与根际有益微生物互惠关键生物学机制
  2. MVC之排球比赛计分程序 ——(二)架构概要设计
  3. 云转型缓慢并不甲骨文在中国区大裁员的唯一原因
  4. AI造福设计师:搭配色板这种苦差事交给GAN就好啦(教程)
  5. 以太网实习_从最初有从事IT的想法,到现在实习两个月的感受
  6. Airflow任务调度延时问题分析和优化
  7. Linux auditd rules generate 通用linux审计规则生成工具DevOps CI/CD持续集成交付 tools
  8. 洛谷——[USACO07OCT]Bessie‘s Secret Pasture S
  9. 2018-04-22jenkins+maven+svn环境搭建学习心得
  10. Control Flow - Containers
  11. 打造一流云计算机房,【迈向“双一流”】为科研插上云计算的“翅膀”
  12. Neural networks and deep learning C1总结(一)
  13. 各大快递电子面单---Api接口(顺丰、快递鸟、菜鸟)
  14. 云基础架构|部署分类|IaaS|PaaS|SaaS——浅析云计算架构
  15. 在网站中接入 客服QQ
  16. Android应用程序文件结构,Android项目文件及应用程序—目录结构详解
  17. 把Excel数据填充word模板生成多份word文档
  18. Scrapy爬虫爬取电影天堂
  19. Django之自定义 form 表单上传图片
  20. Data transformation R语言与python

热门文章

  1. 实战HTML5与CSS3 第一篇】初探水深,美丽的导航,绚丽的图片爆炸!!
  2. jQuery入门第三天
  3. ubuntu下chromium 安装flash player
  4. 没有找到MSVCP71.dll,迅雷5无法进行离线下载,P2P Seacher无法连入emule网络
  5. 与时共舞,力求变革【我眼中的戴尔转型】
  6. 我决定不能贱卖自己(2010年11月13日志)
  7. 解决“HTTP/1.1 405 Method not allowed”问题
  8. Poj(3615),Floyd,最大值中的最小值
  9. 解决 QtCreator 3.5(4.0)无法输入中文的问题
  10. JAVA的字符串拼接与性能