代码随想录训练营第六十天 | 单调栈

今天是代码随想录训练营的第六十天,是最后一天,也代表这一刷结束

 

84.柱状图中最大的矩形

复制代码
class Solution {
    public int largestRectangleArea(int[] heights) {
        int n = heights.length;
        Stack<Integer> stack = new Stack<>();
        
        int max = -1;
        for(int i = 0; i< n; i++){
            while(!stack.isEmpty() && heights[stack.peek()]>=heights[i]){
                int temp = stack.peek();
                stack.pop();
                max = Math.max(max, (stack.isEmpty()?i:(i-1)-stack.peek())*heights[temp]);

            }
            stack.push(i);
        }
        while(!stack.isEmpty()){
            int temp = stack.peek();
            stack.pop();
            max = Math.max(max,(stack.isEmpty()?n:(n-1-stack.peek()))*heights[temp]);

        }
        return max;
    }
}
复制代码

要理解空栈和自然弹出所代表的含义。

 

代码随想录训练营刷完了,刷题带给我很大的自信,在刷之前还是对未来很迷茫的,刷的过程中开始投简历,找到了一个目前蛮满意的工作,期待二刷!加油!

posted @   小猫Soda  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示