Day19-Online Stock Span(Medium)

问题描述:

Write a class StockSpanner which collects daily price quotes for some stock, and returns the span of that stock’s price for the current day.

The span of the stock’s price today is defined as the maximum number of consecutive days (starting from today and going backwards) for which the price of the stock was less than or equal to today’s price.

For example, if the price of a stock over the next 7 days were [100, 80, 60, 70, 60, 75, 85], then the stock spans would be [1, 1, 1, 2, 1, 4, 6].

说实话,读了好几遍没明白是啥意思,也不知道是我语文差还是英语差,看了别人的解释才知道,就是给我们一个数组,让我们找到每个数之前有多少连续的(到这个数的位置)数小于等于当前数(包括当前数)

Example:

Example 1:Input: ["StockSpanner","next","next","next","next","next","next","next"], [[],[100],[80],[60],[70],[60],[75],[85]]
Output: [null,1,1,1,2,1,4,6]
Explanation:
First, S = StockSpanner() is initialized.  Then:
S.next(100) is called and returns 1,
S.next(80) is called and returns 1,
S.next(60) is called and returns 1,
S.next(70) is called and returns 2,
S.next(60) is called and returns 1,
S.next(75) is called and returns 4,
S.next(85) is called and returns 6.Note that (for example) S.next(75) returned 4, because the last 4 prices
(including today's price of 75) were less than or equal to today's price.Note:Calls to StockSpanner.next(int price) will have 1 <= price <= 10^5.
There will be at most 10000 calls to StockSpanner.next per test case.
There will be at most 150000 calls to StockSpanner.next across all test cases.
The total time limit for this problem has been reduced by 75% for C++, and 50% for all other languages.

解法:

这道题我们只需要明确一点就能解出来了,题中“连续”的定义,“连续”指之前第一个小于等于当前数到现在这个位置这一段距离。这样的话,如果一个数前面的数大于当前数,则之间返回1,反之,我们向前遍历找到第一个大于当前数的位置。为了节省时间复杂度,我们设置一个栈存储每个位置的数字和与之对应的连续位置。如果一个数字大于栈顶数字,那我们就将栈顶位置进行退栈,然后将新位置跟新进去,反之,我们就不断检索栈顶数字和他们对应的连续位置。
如果没看懂,建议看着代码,然后找个例子跟着代码走一遍流程就明白了,我第一次看别人的解析也是被说晕了,然后看着代码走例子就明白了。

class StockSpanner:def __init__(self):self.result = []def next(self, price: int) -> int:count = 1while self.result and self.result[-1][1] <= price:count += self.result.pop()[0]self.result.append([count,price])return count

5月挑战Day19-Online Stock Span(Medium)相关推荐

  1. C语言Stock span 库存跨度问题(附完整源码)

    C语言Stock span 库存跨度问题 C语言Stock span 库存跨度问题完整源码(定义,实现,main函数测试) Stock span 库存跨度 C语言Stock span 库存跨度问题完整 ...

  2. 华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界翘楚?

    本文分享自华为云社区<华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界翘楚?>,原文作者:华为云社区精选 . 4月的一个周五傍晚,刚刚结束一场语音会议的明哥,拿起桌上的咖啡,一 ...

  3. [Swift]LeetCode901. 股票价格跨度 | Online Stock Span

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  4. 【Python3】 LeetCode 7月挑战题目之21 - Word Search

    目录/Table of Content 第二十一天问:Word Search 题目&示例 (引用自 LeetCode) 解题思路 失败代码 (不完整,仅供自己存档) 参考代码 (引用自CSDN ...

  5. 【6月挑战算法入门级挑战赛】组织活动

    试题描述 旅行社计划组织一个独木舟旅行.租用的独木舟都是一样的,最多乘两人,而且承重有一个限度.现在要节约费用,所以要尽可能的租用最少的舟.本题的任务是读入独木舟的载重量,参加旅行的人数以及每个人的体 ...

  6. LeetCode 力扣算法题解汇总,All in One

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: https://fuxuemingzhu.cn 关键词:LeetCode,力扣,算法,题解,汇总,解析 把自己刷过的所有题目做一个整理, ...

  7. 印度首次挑战登月告败,一步之遥≈多大差距?

    来源:三体引力波(the-3body) 最坏消息还是来了.今天凌晨,印度探测器首次登月尝试,只差一步之遥,距离月表不到2100米,月船2号着陆器与班加罗尔控制中心失去联系,信号中断,再也没有恢复,几乎 ...

  8. 2022年3月15日黑马第三天

    <style>header {/* 高度 */height: 80px;/* 宽度 */width: 80px;/* 背景颜色bgc */background-color: pink;}m ...

  9. NPC位置及各种商业技能上限(150225)突破方法 5月25日修订 附图

    <!-- --> <html> <head> <meta http-equiv='Content-Type' content="text/html; ...

最新文章

  1. windows系统解决github.com访问超时
  2. C#.NET常见问题(FAQ)-如何修改Form不能修改窗体大小
  3. Keras深度学习框架介绍(结束)
  4. python第9周小测验答案_智慧树_Python程序设计基础_章节测验答案
  5. Linux 性能监控 : CPU 、Memory 、 IO 、Network
  6. 怎样清空输入缓冲区里的内容
  7. django系列5.2--ORM数据库的单表操作
  8. RK3288_Android7.1基于tinyalsa的音频调试说明
  9. tomcat编码配置gbk_tomcat的编码设置 tomcat中文问题的解决
  10. 数据库设计(三)——数据库设计规范
  11. Android PackageInstaller:安装应用的应用,从三流Android外包到秒杀阿里P7
  12. 【数据结构与算法】迪杰斯特拉算法的介绍和最短路径问题程序实现
  13. 学业水平计算机考试考点宣传标语,中考考点宣传标语(学生方面)
  14. python正方形螺旋线-利用Python绘制一个正方形螺旋线
  15. 分享 | 物体检测和数据集
  16. 字长模型LP64,ILP64,LLP64,ILP32,LP32
  17. 【Python】excel格式转换操作 -操作Excel、Word、CSV(4)(保姆级图文注释+测试代码+api例程)
  18. PHP仿百度网盘文件分享dzzoffice网盘系统源码
  19. 西门子 S7-300 PLC 从入门到精通的100个经典问题
  20. (转载)解密 [Dekrypt24@tutanota.com].mkp 病毒

热门文章

  1. 总结 SAP ERP相关概念
  2. Qt文件操作之文件读写
  3. Aim Wepon(Aim IK)
  4. PHP对接企业微信API上传临时素材
  5. Sphinx 三种常见数据源配置
  6. 开发调试时,清空浏览器缓存
  7. 作为一个开发人员如何挣钱_作为开发人员如何提出好的问题
  8. C语言中清空数组的方法(VS2013)
  9. C# 多进程打开PPT的示例教程
  10. 《软件开发的201个原则》思考:3.开发效率和质量密不可分