单调栈

优质参考博客

重要性质

  • 弹出时只能从栈顶[st.top()]弹出
  • 从栈顶到栈底,元素大小呈某种单调趋势
  • 当欲压入栈的元素不满足这个单调性时,就要把不满足单调性的所有[栈顶]元素弹出 -> 这个性质用到的比较多
  • 配合数组使用时,栈内可以存储对应元素的下标,而不是元素值

使用心得

  • 使用时要注意考虑单调顺序:1️⃣递增,2️⃣递减
  • 要搞清楚单调栈中记录元素的意义:例如题—[503],单调栈中记录的是还没有找到下一个更大值的下标, 只要遍历到比栈顶元素值更大的数,就意味着栈顶元素找到了答案,记录答案,然后从栈顶弹出
  • 一定要注意单调栈里存储的是索引还是元素值

相关题目

题目解析

  • [556] 一定要注意题目的条件 ->
    • 满足条件的最小整数
    • 如果最小的不是32位整数,也返回-1

扩展-循环数组

  • 处理方式1:将[0:n-1]个个数顺序拷贝到第n个数后面,构成一个普通数组
  • 处理方式2:遍历[0:2n-1)次,取元素时对下标取模

单调栈
http://example.com/2024/06/24/单调栈/
作者
Cyokeo
发布于
2024年6月24日
许可协议