栈
栈
栈是一种先进后出的数据结构。
栈有两种实现方法,一种是数组,另外一种是 STL 容器。
- 数组:
int top, stk[N];
stk[++top] = x; // 入栈
top--; // 弹栈
int k = stk[top]; // 取栈顶
top = 0; // 清空栈
- STL:
stack<int> stk;
stk.push(x); // 入栈
stk.pop(); // 弹栈,此时栈不为空
int k = stk.top(); // 取栈顶,此时栈不为空
单调栈
单调栈,顾名思义,是栈内元素满足单调性的栈。
插入
假设我们现在的栈是这样的:

假设我们现在要把 \(14\) 压入栈中,那么就是这样的:

也就是说,我们将栈中那些比 \(14\) 小的元素都弹掉了。
实现就是这样的:
while (top && stk[top] < a[i]) top--;
stk[++top] = a[i];
使用
自然就是从栈顶读出来一个元素,该元素满足单调性的某一端。
例如举例中取出的即栈中的最小值。

浙公网安备 33010602011771号