声明
本文资料参考acwing算法基础课
地址:https://www.acwing.com
概述
- 解决问题:依次查找某个数组每一位前第一个满足某条件的数
- 遍历到的数既是目标对象,也是被查集合的元素
- 比如查找比那个数小的第一个数,则当压入栈的数比栈顶小的时候,栈顶就没有了作用。
模板记忆
这个模板分为两个部分:
- 查:遍历到某个数的时候,通过依次弹出来查找满足条件的数
- 压:新数字压入栈中
模板代码
while (n -- )
{
int x;
cin >> x;
while (top != 0 && st[top - 1] >= x) top --;
if (top == 0) cout << -1 << ' ';
else cout << st[top - 1] << ' ';
st[top ++ ] = x;
}