题解 | #直方图内最大矩形#

直方图内最大矩形

https://www.nowcoder.com/practice/bfaac4eebe5947af80912d1bcfcf2baa

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param heights int整型一维数组 
 * @return int整型
 */
function largestRectangleArea( heights ) {
    //总宽度
    let n=heights.length;
    let res=0;
    for(let i=0;i<n;i++){
        let start=-1; //从后往前找到第一个小于当前的高度,记为start
        for(let j=i-1;j>=0;j--){
            if(heights[j]<heights[i]){
                start=j;
                break;
            }
        }
        let end=n;
        //从前往后找到第一个小于当前的高度,记为end
        for(let j=i+1;j<n;j++){
            if(heights[j]<heights[i]){
                end=j;
                break;
            }
        }
        //根据start、end得到以当前高度为高的最大矩形面积,取所有可能的最大值
        res=Math.max(res,(end-start-1)*heights[i]);
    }       
    return res;
}
module.exports = {
    largestRectangleArea : largestRectangleArea
};

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务