题目
解题思路
用单调递增栈,当该元素可以入栈的时候,栈顶元素就是它左侧第一个比它小的元素。
以:3 4 2 7 5 为例,过程如下:
注意此处使用的单调栈从下标为1开始存储,栈顶为0说明当前栈为空。
代码模板
#include<iostream>
using namespace std;
const int N=1e5+10;
int q[N],ts=0;
int main()
{
int n;
int i,j;
scanf("%d",&n);
while(n--)
{
cin>>i;
while(q[ts]>=i&&ts)ts--;
if(ts==0)printf("-1 ");
else {printf("%d ",q[ts]);
}
q[++ts]=i;
}
return 0;
}