单调栈(模版

Posted hhyx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单调栈(模版相关的知识,希望对你有一定的参考价值。

# 题意

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 }

 

以上是关于单调栈(模版的主要内容,如果未能解决你的问题,请参考以下文章

单调栈

线性表--单调栈

线性表--单调栈

LeetCode- 柱状图中最大的矩形(单调栈)

使用Visual Studio Code自定义代码模版

使用 Git 来管理 Xcode 中的代码片段