码迷,mamicode.com
首页 > 其他好文 > 详细

单调栈(模版

时间:2020-03-15 09:29:07      阅读:50      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!