AcWing 830. 单调栈
原题链接
简单
作者:
L-China
,
2022-12-03 14:36:08
,
所有人可见
,
阅读 255
C++
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int n;
int stk[N], tt;
int main(){
cin.tie(0); // 加快运行时间作用
ios::sync_with_stdio(false);
cin >> n;
for (int i = 0; i < n; i ++){
int x;
cin >> x;
while (tt && stk[tt] >= x) tt --; //如果此时栈不为空并且栈顶元素大于x,那么栈顶元素就永远不会被用到了,tt --
if (tt) cout << stk[tt] << ' ';//如果栈不为空,说明此时栈顶元素就是每个数左边第一个比它小的数
else cout << -1 << ' ';// 否则,说明栈是空的,说明左边没有任何一个数比x小,输出 -1
stk[++ tt] = x; //最后要记得把x插入到栈里
}
//for (int i = 1; i <= tt; i ++) cout <<stk[i]<< endl;
return 0;
}