739. 每日温度

1.题目
请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。

2.实现
接触过单调队列,所以本题单调栈的方法呼之欲出

class Solution:def dailyTemperatures(self, temperatures: List[int]) -> List[int]:stack = []n = len(temperatures)res = [0] * nstack.append(0)for i in range(1, n):if temperatures[stack[-1]] < temperatures[i]:while stack and temperatures[stack[-1]] < temperatures[i]:index = stack.pop()res[index] = i - indexstack.append(i)return res

3.单调栈介绍
1)使用场景:给定一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置
2)本质:空间换时间,因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高的元素,优点是只需要遍历一次。
3)方法:一般存放元素的下标i;比较栈顶和需入栈元素的大小来保持栈内递增还是递减的顺序

496. 下一个更大元素 I

1.题目
给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。
nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。

2.实现
困难点:这个题有点绕,对于找位置是没问题的,但是如何找到nums1对应数的值,没有想好怎么做

class Solution:def nextGreaterElement(self, nums1: List[int], nums2: List[int]) -> List[int]:stack = []n = len(nums2)stack.append(0)m = len(nums1)res = [-1] * ma = defaultdict(int)for i in range(m):a[nums1[i]] = ifor i in range(n):if nums2[stack[-1]] < nums2[i]:while stack and nums2[stack[-1]] < nums2[i]:index = stack.pop()if nums2[index] in a:res[a[nums2[index]]] = nums2[i]stack.append(i)return res

值得二刷

D58|单调栈Part1+基础篇相关推荐

  1. TOP16榜首之SQL注入<宝藏文--- 工具实战演习 > -- -- 小黑渗透工程栈( 基础篇3 )

    之前两篇文章对sql注入做了简单详细的说明,这里会先做一下实战演习,然后会简单结合工具burp suite 和 sqlmap演示,以及对工具的使用说明. 此靶场为DVWA,下面链接是关于DVWA安装教 ...

  2. 使用 MEAN 进行全栈开发基础篇——2、弄一个简单的用户管理试试

    搭建项目 这下我们应该来搭建一个项目了,随便起个名字 ForUsers 找一个合适的位置,然后打开命令行:express ForUsers 会得如下树状图的结构 ├── app.js ├── bin ...

  3. 使用 MEAN 进行全栈开发基础篇——4、接着前面玩儿添加

    添加一个新用户 在本节中,你将了解有关使用 Express 创建 API 端点,使用 Angular 构建表单,以及使用 Monk 在 Mongo 中存储内容的更多信息. 与上一节类似,但在本节中我们 ...

  4. CodeForces - 1313C2 Skyscrapers (hard version)(单调栈+dp/分治)

    题目链接:点击查看 题目大意:给出 n 块连续的空地可以建造摩天大楼,政府有规定,每块地最高只能建 a[ i ] 的高度,同时每栋大楼需要满足一个规则,即每栋大楼的两侧不允许同时存在比自己高的大楼,输 ...

  5. Kiner算法刷题记(十四):数据结构中的“渣男”——单调栈(数据结构基础篇)

    系列文章导引 系列文章导引 开源项目 本系列所有文章都将会收录到GitHub中统一收藏与管理,欢迎ISSUE和Star. GitHub传送门:Kiner算法算题记 知识回顾 我们之前讨论过单调队列,知 ...

  6. 学习笔记:SpringCloud 微服务技术栈_实用篇①_基础知识

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...

  7. 代码随想录1刷—单调栈篇

    代码随想录1刷-单调栈篇 什么时候想到单调栈? 单调栈的原理? 单调栈工作过程? [739. 每日温度](https://leetcode.cn/problems/daily-temperatures ...

  8. 算法基础17 —— 单调栈(Acwing 830 单调栈)

    单调栈的分类 单调递增栈:栈中的元素从栈底到栈顶是单调递增的.不难发现,单调递增栈的出栈序列递减 单调递减栈:栈中的元素从栈底到栈顶是单调递减的.不难发现,单调递减栈的出栈序列递增 单调栈的应用 求数 ...

  9. [力扣刷题总结](栈和单调栈篇)

    文章目录 ~~~~~~~~~~~~栈~~~~~~~~~~~~ 155. 最小栈 解法1:链表 剑指 Offer 31. 栈的压入.弹出序列 解法1:模拟栈 20. 有效的括号 解法1:栈 相似题目: ...

最新文章

  1. Count Color(poj 2777)
  2. 前端学习(2887):如何短时间内实现v-for proxy代理
  3. python模块(6)-Pandas 简易使用教程
  4. 安卓打开第二个activity就崩溃_零基础安卓开发起步(三)
  5. Eslint Standard Style语法规则
  6. DDD领域驱动设计详解
  7. The proxy server received an invalid response from an upstream server.
  8. android脚本录制脚本,Android 屏幕录制GIF脚本
  9. DeFi 可以从金融危机中学到三件事
  10. shell一站式攻略——history历史命令
  11. c语言考场排座系统,具才考场座次编排系统
  12. 假冒网站引发多重安全风险 | 官方严正声明:切勿在非官方渠道购买或下载 Navicat 软件
  13. Android 渐变色背景样式
  14. Adobe Illustrator CC 制作排版
  15. 你们能送我一句加油的话吗?
  16. 【PP】PP 模块配置
  17. coreldraw sp2精简版 x4_coreldraw x4
  18. apache2.4开启GZIP压缩
  19. i=i+1 与 i+=1 区别
  20. 【Python】利用format方法保留三位小数

热门文章

  1. 南京晓庄学院计组期末复习限时训练03(第二章计算机的发展及应用)
  2. 数字孪生开发 数字孪生开发软件
  3. mobiscroll日期插件
  4. 关于RF433无线模块及应用领域分析之433胎压模块
  5. 科赛网 魔镜杯“风控算法比赛”赛后总结
  6. 【史上最坑爹的游戏】002 关卡选择画面的实现
  7. Cron常用表达式详解
  8. Centos 8 安装git 客户端
  9. Linux运行python报错:Could not connect to any X display.
  10. 解除华为学生模式的6种方法