AcWing 830. STL实现单调栈
原题链接
简单
作者:
Ikuyo
,
2024-01-20 01:38:45
,
所有人可见
,
阅读 37
STL实现单调栈
/*
单调栈的目的: 找到左边最小的数,就是删除掉所有逆序的数
比如 1 3 2 4比2小,所以可以删去
*/
#include <iostream>
#include <stack>
int n,num;
using namespace std;
stack<int> stk;
int main (){
cin >> n;
while(n--){
cin >> num;
if(stk.size() == 0){
stk.push(num);
cout << -1 <<" ";
}else if(stk.top() >= num){
while( stk.size() && stk.top() >= num )
stk.pop();
if(stk.size() != 0) cout << stk.top() << " ";
else cout << -1 <<" ";
stk.push(num);
}else{
cout << stk.top() << " ";
stk.push(num);
}
}
return 0;
}