单调栈,单调队列顾名思义,栈内或者队列内元素具有一致下降或者一致上升的特点。

选用单调栈或者队列的出发点:

使用单调栈或者单调队列一般具有三个出发点: 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

刷题关键点总结-单调栈、单调队列相关推荐

  1. [LeetCode]-Python刷题第三周(栈和队列)

    20. Valid Parentheses 合法括号(Easy) Given a string containing just the characters '(', ')', '{', '}', ' ...

  2. Acwing算法基础课学习笔记(四)--数据结构之单链表双链表模拟栈模拟队列单调栈单调队列KMP

    单链表 算法题中最常考的单链表就是邻接表(用来存储图和数),比如最短路问题,最小生成树问题,最大流问题.双链表用于优化某些问题. 利用数组来表达单链表:存储值和指针的两个数组利用下标进行关联. 需要注 ...

  3. 单调栈 、 队列学习

    推荐博客 : https://blog.csdn.net/zuzhiang/article/details/78134247 单调栈.队列只需满足两个条件即可,序列是单调的,并且符合栈和队列的特性. ...

  4. 牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列

    前言: 牛客网 c++ 剑指Offer_编程题 第五题用两个栈实现队列 题目: **这个题目不难,但是我感觉题目出得奇怪,刚开始没理解要干啥 我一个队列就能实现他要的功能为啥要两个 队列 queue ...

  5. leetcode剑指offe刷题-第一题-用两个栈实现队列

    leetcode剑指offe刷题-第一题 文章目录 leetcode剑指offe刷题-第一题 前言 一.用两个栈实现队列 1.思路 2.代码如下 总结 前言 记录一下自己刷算法的路程. leetcod ...

  6. 编程题练习 两个栈实现队列

    两个栈实现队列 1.判断队列为空: 当栈s1 和 s2都为空时,那么队列为空 2.入队操作: 直接将数据加入到s1栈中 3.出队操作:当 s2 栈不为空的时候, s2 栈直接执行出栈操作就可以得到出队 ...

  7. 刷题总结——生日礼物(bzoj1293单调队列)

    题目: Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠, ...

  8. 刷题总结——烽火传递(单调队列+dp)

    题目: 题目描述 烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上.一旦有敌情发生,白天燃烧柴草,通过浓烟表达信息:夜晚燃烧干柴,以火光传递军情.在某两座城市之间有 n 个烽火台,每个烽火 ...

  9. [剑指offer][JAVA]面试题第[09]题[用两个栈实现队列][LinkedList]

    [问题描述][简单] 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元 ...

最新文章

  1. 五个超酷Linux命令
  2. Ubuntu Nginx uwsgi django 初试
  3. java文件放桌面怎么运行不了,不可能使用Java桌面在网络上启动文件吗?
  4. 82. 删除排序链表中的重复元素 II(链表操作)
  5. [MyBatisPlus]代码生成器
  6. python库测试记录(sys、time、datetime、random、hashlib)
  7. codewars--js--Happy numbers++无穷大判断
  8. 冲刺阶段—个人工作总结07
  9. 在MATLAB中绘制水平线和垂直线的一些方法
  10. 曲线与曲面积分公式整理
  11. nexus安装过程中遇到的一些问题
  12. 借《鱿鱼游戏》带动Q3财报走出水逆,奈飞的王者回归并非意外
  13. uC/OS-II任务调度之就绪表及最高优先级任务判定算法
  14. java eclipse生成apk,将Eclipse Android项目打包成APK文件
  15. 上周AI热点回顾:AI“模拟”出暗物质、AI挖掘毕加索秘密、CPU在大型神经网络超越V100 GPU...
  16. 【量化笔记】ARCH效应检验及GARCH建模的python实现
  17. 小a与星际探索(dp)
  18. Linux强制使用短密码|修改短密码|passwd无效的密码
  19. javascript设计模式-命令模式(command pattern)
  20. 2023中国(上海)国际大豆食品加工及设备展览会

热门文章

  1. 技术分析之OGNL表达式概述
  2. poj3463 最短路和次短路 计数
  3. 初学JAVA随记——代码练习(二元一次方程)
  4. SQL Server实用经验与技巧大汇集 [转]
  5. CYYMysql 源码解读 2
  6. Vue列表搜索和排序---vue工作笔记0010
  7. SentinelResource注解配置上_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0045
  8. 微服务升级_SpringCloud Alibaba工作笔记0012---Gateway常用的Filter
  9. STM32工作笔记0088---时间标志组和同时等待多个内核对象
  10. VB.NET工作笔记007---ASP.NET中Session超时一直不起作用