单调栈经典例题

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;
        }
    }
}
相关推荐
wuyk5552 小时前
104.C 语言字节对齐:从底层原理到工程实践的完整指南
c语言·开发语言·stm32·单片机·嵌入式硬件
ZYJCSZKJ2 小时前
基于地理位置围栏的短视频POI团购系统:LBS空间索引与流量分发实践
java·服务器·数据库
mldong7 小时前
引擎从不发一条消息:jeeflow 的两类扩展点与消息模块的分工
java·架构
君顾18 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
北域码匠8 小时前
高通滤波算法深度解析(High-Pass Filter)
stm32·算法·c#·数字信号处理·嵌入式开发·滤波算法·高通滤波
南棱笑笑生8 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
zhanghe6879 小时前
es的密码带有特殊字符,导出
java
指掀涛澜天下惊9 小时前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
平头哥技术团队9 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
pnoker9 小时前
IoT DC3 概念解读:把设备抽象成一套语义模板——位号、指令、事件与面向智能体的设备建模
java·人工智能·物联网·iot·dc3