【题目描述】
给出长度为n的整数数列,输出小于每个数左边第一个的数,如果不存在,输出1。【输入格式】
在第一行中输入表示数列长度的整数n。
在第二行中,输入表示数列各元素值的n个整数。【输出格式】
在包含n个整数的一行中,第I个个数表示第I个个数的左边的第一个小于第一个的数目,且如果不存在,则输出1。【数据范围】
1N100000
1数列中的元素10000003358 www.Sina.com /
输入示例:
5
3 4 2 7 5
输出示例:
-1 3 -1 2 2 【样例】
显然,单调堆栈是解决“下一个更大元素”问题的最佳数据结构,因此该问题最好用单调堆栈来解决。【算法分析】
# include bits/stdc.husingnamespacestd; 常数上限=100010; int n; int main () {cinn; 堆栈int STK; for(intI=0; in; I ) ) {int x; cinx; while (! STK.empty(STK.top )=x (STK.pop ); cout (! stk.empty (? STK.top(:-1 ) '; STK.push(x; }/* input :534275 output :-13-12 * /
【算法代码】
3359 blog.csdn.net/lucky 52529/article/details/89155694
3359 MP.weixin.QQ.com/s/oqjxzbfkfbt6ut _-1b2s _ q
3359 blog.csdn.net/sinat _ 30467885/article/details/89446950
3359 blog.csdn.net/QQ _ 45836635/article/details/104415823
3359 blog.csdn.net/jacksonmhlk/article/details/114598876
3359 blog.csdn.net/u 011815404/article/details/86896303