栈的定义
栈的修改与访问是按照后进先出的原则进行的
栈通常被称为是后进先出(last in first out)表,简称 LIFO 表
是只允许在一端进行插入或删除操作的线性表

此动图来源于:oi-wiki
栈的STL运用
stack<T> st :建立一个名为st的T类型栈
st.top():返回栈顶
st.push():插入传入的参数到栈顶
st.pop():弹出栈顶
st.empty():返回是否为空
st.size():返回元素数量
单调栈 & 单调队列
单调栈的定义其实与单调队列的定义差不多,都需要保持单调性,单调栈即满足单调性的栈结构
有关单调队列可以看我的另一篇博文:
单调队列【deque】 & 队列【STL】& 洛谷P1886 滑动窗口 & 洛谷P9905 [COCI 2023_2024 #1] AN2DL 【矩阵区间最大值】
单调栈的详细解释【图文讲解】
假设输入的数为:
5
1 5 2 4 3
其中5是个数,剩下的1,5,2,4,3是输入的数列
假设:我们用这个数列以1~n的顺序维护一个单调递增的单调栈(PS:栈初始为空)
当i=1时,因为栈是空的,所以直接将1给压入栈

当i=2时,因为5 > 1 所以直接将5压入栈

当i=3时,因为2<5,所以将5弹出,因为2>1,所以直接将2压入栈

当i=4时,因为4>2,所以直接将4压入栈

当i=5时,因为3<4,所以将


1244

被折叠的 条评论
为什么被折叠?



