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

【hot100-java】【柱状图中最大的矩形】

R9-栈篇

面积最大矩形的高度一定是 heights 中的元素

 

简单解释,就是说,最大高度必然是heights中的一个元素,我们假设是h,然后我们基于h,左右拓展,尽量拓展到h越来越高(符合单调栈),这样能保证left~right之间的最高高度都是h.

Deque<Integer>st=new ArrayDeque<>();
//整形双端队列

peek()取出队列头部元素

class Solution {
    public int largestRectangleArea(int[] heights) {
          int n=heights.length;
          int [] left=new int[n];
          Deque<Integer>st=new ArrayDeque<>();
          for (int i=0;i<n;i++){
            int x=heights[i];
            while(!st.isEmpty()&&x<=heights[st.peek()]){
                st.pop();
            }
            left[i]=st.isEmpty()?-1:st.peek();
            st.push(i);
          }
         //开始处理右边
          int [] right=new int[n];
          st.clear();
          for (int i=n-1;i>=0;i--){
            int x=heights[i];
            while(!st.isEmpty()&&x<=heights[st.peek()]){
                st.pop();
            }
            right[i]=st.isEmpty()?n:st.peek();
            st.push(i);
          }    

          //返回结果处理
          int ret=0;
          for (int i=0;i<n;i++){
            ret=Math.max(ret,heights[i]*(right[i]-left[i]-1));
          }      
          return ret;
    }
}

 


http://www.kler.cn/a/324252.html

相关文章:

  • JSR303校验教学
  • 240. 搜索二维矩阵||
  • 跨境数据传输问题常见解决方式
  • 【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
  • HarmonyOS DevEco Studio模拟器点击运行没有反应的解决方法
  • docker安装Redis:docker离线安装Redis、docker在线安装Redis、Redis镜像下载、Redis配置、Redis命令
  • 2024.9.23-2024.9.29组会报告
  • 【HTTP 和 HTTPS详解】3
  • Chainlit集成LlamaIndex实现知识库高级检索(子问题查询引擎)
  • VR虚拟展厅可以在手机上打开吗?
  • 【2023工业3D异常检测文献】基于混合融合的多模态工业异常检测方法Multi-3D-Memory (M3DM)
  • 图灵完备-奇数个信号
  • C++ | Leetcode C++题解之第441题排列硬币
  • FPGA在汽车电子中应用-ADAS
  • 基于 Debian 的系统(如 Ubuntu)上安装、启动和配置 SSH 服务的指令流
  • Redis篇(应用案例 - 商户查询缓存)
  • 深度学习反向传播-过程举例
  • opencv实战项目二十九:GrabCut分割人像
  • Kubernetes学习路线
  • 极狐GitLab 17.4 重点功能解读【一】
  • 基于php的酒店管理系
  • Arthas redefine(加载外部的.class文件,redefine到JVM里 )
  • C高级(Day22)
  • 前端学习笔记-JS进阶篇-02
  • Note2024092801_python 日历信息获取
  • 【算法题】5. 最长回文子串-力扣(LeetCode)