zoukankan      html  css  js  c++  java
  • 柱状图中最大的矩形

    给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。

    求在该柱状图中,能够勾勒出来的矩形的最大面积。

    以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。

     

    图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。

    /**
     * @param {number[]} heights
     * @return {number}
     */
    var largestRectangleArea = function(heights) {
    //      let max = 0;
    
    //     for(let j=heights.length-1;j>=0;j--){
    //       for(let i=0;i<=j;i++){
    //         let min = Math.min(...heights.slice(i,j+1));
    //         if(max<(j-i+1)*min){
    //           max = (j-i+1)*min;
    //         }
    //       }
    //     }
    //     return max;
        let max = 0;
        
        for(let i=0;i<heights.length;i++){
    
          let left_i= i;
          let right_i = i;
    
          while(left_i>=0&&heights[left_i]>=heights[i]) left_i--;
          left_i ++;
          while(right_i<heights.length&&heights[right_i]>=heights[i]) right_i++;
          right_i++;
    
          max = Math.max(max,(right_i-left_i-1)*heights[i]);
    
        }
    
        
        return max;
    };

    实现:主要是找到每个元素的最大面积值,最大面积值的求法:从当前位置开始从左找到一个比当前元素小的数据,从右找到一个比当前元素小的数据,然后将计算中间最大的面积值。

    示例:

    输入: [2,1,5,6,2,3]
    输出: 10

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/largest-rectangle-in-histogram
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  • 相关阅读:
    Maven POM 元素参考表
    Hibernate MySql 连接池隔天断开解决方法
    html页面乱码问题
    Maven常用插件列表
    cygwin下使用vi
    干掉已打开的端口(如:停止8080端口)
    将Maven的Web Project部署到Tomcat
    [转]利用FtpClient类实现文件的上传下载功能
    关于生成GUID
    FinalShell 离线激活工具
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/11900432.html
Copyright © 2011-2022 走看看