C++ 代码
利用单调栈的思想求解
1. 构造一个单调递增的栈
2. 比较栈顶元素与即将入栈元素的大小
3. 如果即将入栈的元素小于栈顶元素则栈顶指针tt–,直到为空栈或者都比该元素小
4. 非空则输出栈顶元素,否则输出-1
5. 入栈
# include<iostream>
using namespace std;
const int N = 100010;
int stk[N], tt;
int main()
{
int m, x;
scanf("%d", &m);
for (int i = 0; i < m; i ++)
{
scanf("%d", &x);
while(tt && x <= stk[tt]) tt--;
if(tt) printf("%d ", stk[tt]);
else printf("-1 ");
stk[ ++tt] = x;
}
}