Skip to content

单调栈

模板题:找出每个数左边第一个比它大/小的数

C++
int stk[N], tt = 0;
for (int x : nums) {
    while (tt > 0 && check(stk[tt], x)) --tt;
    stk[++tt] = x;
}
int stk[N], tt = 0;
for (int x : nums) {
    while (tt > 0 && check(stk[tt], x)) --tt;
    stk[++tt] = x;
}