解题思路
1.暴力
用两个 for 循环遍历。外层 for 循环从第一个数开始遍历,内层 for 循环从 j=i-1,开始遍历直到 j>=0
如果 a[i]>a[j] 就输出这个数,然后 break,如果内层遍历完了还没有找到则输出 -1
2.单调栈
#include <stdio.h>
int stack[100005], top;
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int x;
scanf("%d", &x);
//栈里面的数字保持单调递增
while (stack[top] >= x && top)
top--;
//如果不为空,则表示存在
if (top)
printf("%d ", stack[top]);
else
printf("-1 ");
//当前数入栈
stack[++top] = x;
}
return 0;
}