C++ 代码
利用单调栈的方式来进行求解:
(1)原理:元素从栈底到栈顶为单调递减,每次输出的都是栈顶元素。
(2)先考虑一般情况:当栈非空且栈顶元素大于等于输入的数据时,tt–弹出该栈顶元素
(3)如果栈顶指针tt=0,为空的时候,此时没有满足的元素存在,因此输出-1,否则输出栈顶元素
(4)将该元素压栈。
# include <iostream>
using namespace std;
const int N = 100010;
int stk[N], tt = 0;
int main()
{
int m, x;
scanf("%d", &m);
while(m --)
{
scanf("%d", &x);
while(tt && stk[tt] >= x) tt--;
if (!tt) printf("-1 ");
else printf("%d ", stk[tt]);
stk[ ++tt] = x;
}
return 0;
}
你原来的题解旁边,有一支笔,点一下即可编辑题解哦,不需要再额外做一篇了
快把前面那篇删了