刷题关键点总结-单调栈、单调队列
单调栈,单调队列顾名思义,栈内或者队列内元素具有一致下降或者一致上升的特点。
选用单调栈或者队列的出发点:
使用单调栈或者单调队列一般具有三个出发点: 1.求栈或队列内某个元素左侧或者右侧第一个比它大或者小的元素。 单调递减栈或者队列可以求得第一个比它大的数字。单调递增栈或者队列可以求第一个比它小的数字。2.需要保持一种递增或者递减的序。3.求一个区间的最大最小值,顶或者尾。
单调栈VS单调队列:
单调栈只用处理尾部数据,单调队列用于头部数据也需要处理的情况。
单调队列在一些情况下可以被用来当作two pointer的延伸版使用。
复杂度:
O(n)复杂度,每个元素只入一次栈,只出一次栈或者队列。所以当题目数字特别大,采用其他方法复杂度很高时,单调栈的可能性更大。
相关题目:
Shortest Subarray with Sum at Least K 待复习,略抽象
Sliding Window Maximum
Trapping Rain Water
Largest Rectangle in Histogram
Maximal Rectangle
Max Tree lintcode
转载于:https://www.cnblogs.com/sherylwang/p/9607660.html
刷题关键点总结-单调栈、单调队列相关推荐
- [LeetCode]-Python刷题第三周(栈和队列)
20. Valid Parentheses 合法括号(Easy) Given a string containing just the characters '(', ')', '{', '}', ' ...
- Acwing算法基础课学习笔记(四)--数据结构之单链表双链表模拟栈模拟队列单调栈单调队列KMP
单链表 算法题中最常考的单链表就是邻接表(用来存储图和数),比如最短路问题,最小生成树问题,最大流问题.双链表用于优化某些问题. 利用数组来表达单链表:存储值和指针的两个数组利用下标进行关联. 需要注 ...
- 单调栈 、 队列学习
推荐博客 : https://blog.csdn.net/zuzhiang/article/details/78134247 单调栈.队列只需满足两个条件即可,序列是单调的,并且符合栈和队列的特性. ...
- 牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列
前言: 牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列 题目: **这个题目不难,但是我感觉题目出得奇怪,刚开始没理解要干啥 我一个队列就能实现他要的功能为啥要两个 队列 queue ...
- leetcode剑指offe刷题-第一题-用两个栈实现队列
leetcode剑指offe刷题-第一题 文章目录 leetcode剑指offe刷题-第一题 前言 一.用两个栈实现队列 1.思路 2.代码如下 总结 前言 记录一下自己刷算法的路程. leetcod ...
- 编程题练习 两个栈实现队列
两个栈实现队列 1.判断队列为空: 当栈s1 和 s2都为空时,那么队列为空 2.入队操作: 直接将数据加入到s1栈中 3.出队操作:当 s2 栈不为空的时候, s2 栈直接执行出栈操作就可以得到出队 ...
- 刷题总结——生日礼物(bzoj1293单调队列)
题目: Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠, ...
- 刷题总结——烽火传递(单调队列+dp)
题目: 题目描述 烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上.一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情.在某两座城市之间有 n 个烽火台,每个烽火 ...
- [剑指offer][JAVA]面试题第[09]题[用两个栈实现队列][LinkedList]
[问题描述][简单] 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元 ...
最新文章
- 五个超酷Linux命令
- Ubuntu Nginx uwsgi django 初试
- java文件放桌面怎么运行不了,不可能使用Java桌面在网络上启动文件吗?
- 82. 删除排序链表中的重复元素 II(链表操作)
- [MyBatisPlus]代码生成器
- python库测试记录(sys、time、datetime、random、hashlib)
- codewars--js--Happy numbers++无穷大判断
- 冲刺阶段—个人工作总结07
- 在MATLAB中绘制水平线和垂直线的一些方法
- 曲线与曲面积分公式整理
- nexus安装过程中遇到的一些问题
- 借《鱿鱼游戏》带动Q3财报走出水逆,奈飞的王者回归并非意外
- uC/OS-II任务调度之就绪表及最高优先级任务判定算法
- java eclipse生成apk,将Eclipse Android项目打包成APK文件
- 上周AI热点回顾:AI“模拟”出暗物质、AI挖掘毕加索秘密、CPU在大型神经网络超越V100 GPU...
- 【量化笔记】ARCH效应检验及GARCH建模的python实现
- 小a与星际探索(dp)
- Linux强制使用短密码|修改短密码|passwd无效的密码
- javascript设计模式-命令模式(command pattern)
- 2023中国(上海)国际大豆食品加工及设备展览会
热门文章
- 技术分析之OGNL表达式概述
- poj3463 最短路和次短路 计数
- 初学JAVA随记——代码练习(二元一次方程)
- SQL Server实用经验与技巧大汇集 [转]
- CYYMysql 源码解读 2
- Vue列表搜索和排序---vue工作笔记0010
- SentinelResource注解配置上_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0045
- 微服务升级_SpringCloud Alibaba工作笔记0012---Gateway常用的Filter
- STM32工作笔记0088---时间标志组和同时等待多个内核对象
- VB.NET工作笔记007---ASP.NET中Session超时一直不起作用