当前位置: 首页 > 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

相关文章:

  • 高亚科技签约美妥维志化工,提升业务协同与项目运营效率
  • K8S containerd拉取harbor镜像
  • ubuntu 22.04 shell
  • 51c大模型~合集42
  • 常用在汽车PKE无钥匙进入系统的高度集成SOC芯片:CSM2433
  • 使用python-Spark使用的场景案例具体代码分析
  • 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)