当前位置: 首页 > article >正文

Leetcode84(柱状图中最大的矩形)

代码:

暴力解法(超时

class Solution {
    public int largestRectangleArea(int[] heights) {
        int area = heights[0];
        int n = heights.length;
        for(int i=0;i<n;i++){
            int min = heights[i];
            for(int j=i;j<n;j++){
                min = Math.min(min,heights[j]);
                area = Math.max(area,heights[i]);
                area = Math.max(area,min*(j-i+1));
            }
        }
        return area;
    }
}

题解里的 用栈存两边边界的数字

class Solution {
    public int largestRectangleArea(int[] heights) {
        int n = heights.length;
        int[] left = new int[n];
        int[] right = new int[n];
        Deque<Integer> mono_stack = new ArrayDeque<Integer>();
        for(int i=0;i<n;i++){
            while(!mono_stack.isEmpty()&&heights[mono_stack.peek()]>=heights[i]){
                mono_stack.pop();
            }
            left[i] = (mono_stack.isEmpty()?-1:mono_stack.peek());
            mono_stack.push(i);
        }
        mono_stack.clear();
        for(int i=n-1;i>=0;i--){
            while(!mono_stack.isEmpty()&&heights[mono_stack.peek()]>=heights[i]){
                mono_stack.pop();
            }
            right[i] = (mono_stack.isEmpty()?n:mono_stack.peek());
            mono_stack.push(i);
        }
        int ans = 0;
        for(int i=0;i<n;i++){
            ans = Math.max(ans,(right[i]-left[i]-1)*heights[i]);
        }
        return ans;
    }
}


http://www.kler.cn/news/137148.html

相关文章:

  • 计算机专业大学四年的学习路线(非常详细),零基础入门到精通,看这一篇就够了
  • MySQL的并行复制原理
  • 【报错处理】MR/Spark 使用 BulkLoad 方式传输到 HBase 发生报错: NullPointerException
  • Dockerfile 中关于 RUN 的奇怪写法 -- 以 | 开头
  • C++20中头文件ranges的使用
  • 达梦数据库DEXP/DIMP逻辑备份还原
  • 设计模式-12-策略模式
  • 最新最全系列之Selenium:传入webdriver驱动的新方法 Service()函数;以前的executable_path报警告,即将弃用
  • C/C++杂谈-printf的可变参数机制
  • C# 电脑程序控制电路开关
  • 局域网内Ubuntu上搭建Git服务器
  • 通过css设置元素隐藏和显示
  • UEC++ day6
  • C#使用MaxMind.GeoIP2数据库查询当前ip地址
  • Rockchip Clock
  • 外卖小程序系统:数字化餐饮的编码之道
  • 1. 基础语法
  • java发送媒体类型为multipart/form-data的请求
  • 2022最新版-李宏毅机器学习深度学习课程-P51 BERT的各种变体
  • 基于Cortex®-M4F的TM4C123GH6NMRT7R 32位MCU,LM74900QRGERQ1、LM74930QRGERQ1汽车类理想二极管
  • 计算机网络的发展
  • 获取所有非manager的员工emp_no
  • mac添加Chrome插件的方法
  • 【华为OD题库-026】通过软盘拷贝文件-java
  • DITTEL控制器维修SENSITRON6-2AE
  • chrome 插件 Mobile simulator