leetcode-84柱状图中最大的矩形(单调栈)「建议收藏」

leetcode-84柱状图中最大的矩形(单调栈)「建议收藏」原题链接给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10题解对于每一个长方体,找出左边比他小的第一个长方体和右边比他小的第一个长方体,然后遍历求结即可class Solution {public

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

原题链接

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

求在该柱状图中,能够勾勒出来的矩形的最大面积。
在这里插入图片描述
以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。
在这里插入图片描述
图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。

示例:

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

题解
对于每一个长方体,找出左边比他小的第一个长方体和右边比他小的第一个长方体,然后遍历求结即可

class Solution { 
   
public:
    int largestRectangleArea(vector<int>& heights) { 
   
        vector<int>left,right;
        stack<int>stk;
        for(int i = 0;i < heights.size();i ++){ 
   
            while(!stk.empty() && heights[stk.top()] >= heights[i])stk.pop();
            if(stk.empty())left.push_back(-1);
            else left.push_back(stk.top());
            stk.push(i);
        }
        while(!stk.empty())stk.pop();
        for(int i = heights.size() - 1;i >= 0;i --){ 
   
            while(!stk.empty() && heights[stk.top()] >= heights[i])stk.pop();
            if(stk.empty())right.push_back(heights.size());
            else right.push_back(stk.top());
            stk.push(i);
        }
        reverse(right.begin(),right.end());
        int res = 0;
        for(int i = 0;i < heights.size();i ++){ 
   
            res = max(res, heights[i] * (right[i] - left[i] - 1));
        }
        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168897.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 天气预报api免费接口_天气API

    天气预报api免费接口_天气API网上几乎所有的天气接口都需要注册key,然后还各种频率限制,每天调用次数才几百次?太坑爹了吧一个简单的天气预报功能,为什么要搞的这么复杂,收什么费?推荐一个真正免费的天气API接口,返回json,jsonp格式没有调用次数、频率和IP限制,并且提供7日天气/15日天气/40日天气/小时预报/生活指数/空气质量/预警信息调用也很简单,一行代码搞定,可在A…

    2022年8月30日
    1
  • vue slot插槽_笔记本内存条插槽显示4个

    vue slot插槽_笔记本内存条插槽显示4个为什么使用slotslot(插槽)在生活中很多地方都有插槽,电脑usb的插槽,插板当中的电源插槽插槽的目的是为了让我们原来的设备具备更多的扩展性比如电脑的USB我们可以插入U盘,手机,鼠标,键

    2022年7月29日
    6
  • Javascript:谈谈JS的全局变量跟局部变量

    Javascript:谈谈JS的全局变量跟局部变量今天公司一个实习小妹子问我两段JS代码的区别:vara=”Hello”;functiontest(){vara;alert(a);a=”World”;alert(a);}vara=”Hello”;functiontest(){alert(a);a=

    2022年6月14日
    76
  • 学习笔记-const与readonly的异同

    学习笔记-const与readonly的异同(1)const定义时即初始化,运行期间无法再初始化;readonly除了在定义时可以初始化外,还能再运行期间的构造函数中初始化,实例只读变量只能在实例构造函数中初始化,静态只读变量只能在静态构造函数

    2022年7月2日
    29
  • C++ 输入的是1.3变1.29999995问题

    C++ 输入的是1.3变1.29999995问题今天一位粉丝在评论中问到了这个问题,我简单的说了原理和改进方法,将float改为double就可以了,下面我进行详细整理先说一下debug是啥意思马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而…

    2022年8月18日
    4
  • 博弈论与多智能体强化学习「建议收藏」

    博弈论与多智能体强化学习「建议收藏」AnnNowe´,PeterVrancx,andYann-Michae¨lDeHauwereAbstract.ReinforcementLearningwasoriginallydevelopedforMarkovDecisionProcesses(MDPs).Itallowsasingleagenttolearnapolicythatma…

    2022年10月9日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号