Leetcode 单调栈模板

java 复制代码
public int[] monoStack(int[] nums){
    int n=nums.length;
    int[] ret=new int[n];
    Arrays.fill(ret,-1);
    Deque<Integer> stack=new ArrayDeque<>();
    //存下标
    for(int i=0;i<n;i++){
        while(!stack.isEmpty()&&nums[i]>nums[stack.peek()]){
            int top=stack.pop();
            
            //top 被弹出元素
            //i 右边界
            //stack.peek() 左边界
            ret[top]=?;
        
        
        }
        stack.push(i);
    }
    return ret;


}

单调栈专门解决"对每个元素,找它旁边第一个比它大/小的元素"这类问题------暴力是 O(n²) 的两层循环,单调栈把它压到 O(n)。

相关推荐
缓慢更新2 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
超级架构师3 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core
深圳市快瞳科技有限公司3 小时前
野外鸟类AI识别落地实录:输入适配、结构化输出、去重聚合与置信度分流的工程实践
算法·计算机视觉·鸟类识别·鸟类ai识别·野外鸟类观测·林业调查
叼烟扛炮3 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
LMT流氓兔4 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
专注仿真4 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法
小豆庄4 小时前
视频遮罩追踪退场后ID撞号的排查—多目标场景下的失效
opencv·算法·bug·视频·python3.11
外收内放4 小时前
Python基础语法练习题(75)
开发语言·python·学习
Tisfy5 小时前
LeetCode 3882.网格图中最小异或路径:动态规划
算法·leetcode·动态规划
starzy19905 小时前
Scala循环与判断:一切皆表达式的控制流
开发语言·人工智能·scala