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)。

相关推荐
2601_962885722 小时前
如何用 Python 计算索提诺比率和卡玛比率?
开发语言·python
郑州光合科技余经理2 小时前
出海外卖平台:支付对接为什么要和下单收款分开
android·java·开发语言·前端·后端·php·ai编程
索尔~古德曼2 小时前
CF(1400-1400&1300-1500)
算法
一只旭宝2 小时前
树的家族全景:从二叉树到 B+ 树
数据结构
我是人✓2 小时前
Spring框架的事务管理
java·后端·spring
kimnoic2 小时前
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
开发语言·python
爱刷碗的苏泓舒2 小时前
泰勒级数与泰勒展开:GNSS卫地距线性化、Jacobian矩阵与Hessian矩阵
线性代数·算法·矩阵·gnss·雅可比矩阵·卫地距线性化·海森矩阵
苏辰澈2 小时前
C++独属于自己的变身:多态
c语言·开发语言·c++·visualstudio·编辑器
谢亮_vipxieliang2 小时前
PHP 异常处理全解析:try-catch、自定义异常与全局异常处理器
开发语言·php