标签:str 输出 单调栈 sync size name 第一个 space color
# 题意
n个数的整数序列,输出每个数左边第一个比它小的数,不存在输出-1
# 题解
输出左边第一个比当前数小的数,栈中存的数是单调上升的,因为后加入的数永远比前加入的数靠后,所以在新加入数的时候只会先考虑后加入的,只有前面的数比后加入的小才会被考虑到,所以栈中只会存单调上升的序列
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+10; 4 int n; 5 int stk[N],tt; 6 int main(){ 7 ios::sync_with_stdio(0); 8 cin.tie(0); 9 cout.tie(0); 10 cin>>n; 11 while(n--){ 12 int x; 13 cin>>x; 14 while(tt&&x<=stk[tt]) 15 tt--; 16 if(tt) cout<<stk[tt]<<‘ ‘; 17 else cout<<"-1"<<‘ ‘; 18 stk[tt++]=x; 19 } 20 }
标签:str 输出 单调栈 sync size name 第一个 space color
原文地址:https://www.cnblogs.com/hhyx/p/12495700.html