单调栈经典例题

java 复制代码
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        //单调递增栈,栈中的所有元素严格单调递增
        //比如1 6 5 4 9 8 7 10 11 56不会出现在答案里
        //因为被4给拦截住了
        //遍历到4的时候可以把56都出栈
        //89也不会出现,被7拦住了
        //遍历到7的时候可以把89出栈
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        int[] stack = new int[100010];
        int tt = 0;
        for (int i = 0; i < n; i++) {
            int x = sc.nextInt();
            //栈顶元素>=当前遍历到的元素就得出栈,出栈的元素以后都不会出现在答案里
            while (tt != 0 && stack[tt] >= x){
                tt--;
            }
            //退出循环时的栈顶就是要输出的结果
            if (tt != 0) System.out.print(stack[tt] + " ");
            else System.out.print("-1 ");

            //最后把该数放进栈里
            stack[++tt] = x;
        }
    }
}
相关推荐
嵌入小生0075 分钟前
基于Linux系统下的C语言程序错误及常见内存问题调试方法教程(嵌入式-Linux-C语言)
linux·c语言·开发语言·嵌入式·小白·内存管理调试·程序错误调试
假女吖☌9 分钟前
限流算法-redis实现与java实现
java·redis·算法
小温冲冲11 分钟前
QPixmap 详解:Qt 中的高效图像处理类
开发语言·图像处理·qt
蒟蒻的贤11 分钟前
两数之和。
算法
lixin55655618 分钟前
基于迁移学习的图像风格增强器
java·人工智能·pytorch·python·深度学习·语言模型
面汤放盐22 分钟前
企业权限--系统性方案探究
java·开发语言
wen__xvn23 分钟前
代码随想录算法训练营DAY27第八章 贪心算法 part01
算法·贪心算法
what丶k24 分钟前
深度解析Redis LRU与LFU算法:区别、实现与选型
java·redis·后端·缓存
悟能不能悟28 分钟前
java Date转换为string
java·开发语言
菜宾36 分钟前
java-redis面试题
java·开发语言·redis