题目描述
给一排 个数,对每个数都找它右边第一个比它大的数,找到就输出那个数,右边不存在比它大的数就输出 。
从右往左扫描,手里维护一个栈:栈里存的是「位置 右边还活着的高度候选」。新来的数会淘汰掉栈顶所有不比它大的候选——它们既够不着自己,更够不着 左边的数。淘汰完剩下的栈顶就是答案;这就是单调栈。
输入格式
第一行一个整数 ()。
第二行 个整数 ()。
输出格式
一行 个整数:每个数右边第一个比它大的数(没有为 ),用空格分隔。
样例
输入:
3
1 5 3
输出:
5 -1 -1
1 右边第一个更大的是 5;5 和 3 右边都没有比它们大的数。
数据范围
。对每个数往右扫一格找答案是 ——一万个全相等的数就能把它卡死;单调栈一轮 。