1.单调栈

一、单调栈定义

单调栈(monotone-stack)是指栈内元素(栈底到栈顶)都是(严格)单调递增或者单调递减的。

如果有新的元素入栈,栈调整过程中 ,会将所有破坏单调性的栈顶元素出栈,并且出栈的元素不会再次入栈 。由于每个元素只有一次入栈和出栈的操作,所以 单调栈的维护时间复杂度是O(n)

二、单调栈性质

  1. 单调栈里的元素具有单调性。
  2. 递增(减)栈中可以找到元素左右两侧比自身小(大)的第一个元素。

主要使用第二条性质,该性质主要体现在栈调整过程中,下面以递增栈为例(假设所有元素都是唯一),当新元素入栈。

  • 对于出栈元素来说:找到右侧第一个比自身小的元素。
  • 对于新元素来说:等待所有破坏递增顺序的元素出栈后,找到左侧第一个比自身小的元素。

三、题目

739. 每日温度(中等)
496. 下一个更大元素 I(简单)
316. 去除重复字母(困难)
901. 股票价格跨度(中等)
402. 移掉K位数字
581. 最短无序连续子数组

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。