最大矩形面积leetcode_leetcode免费吗

最大矩形面积leetcode_leetcode免费吗原题链接给定 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/168746.html原文链接:https://javaforall.net

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


相关推荐

  • 设置eclipse代码自动补全功能

    设置eclipse代码自动补全功能1.选择Eclipse菜单条中的Windows菜单下的Preferences项2.在左侧找到“Java”->“Editor”->“ContentAssist”3.在右侧“AutoActivation”项目下找到“AutoactivationtriggersforJava:”(可以看到设置框中默认的只有“.”,这就是为什么默认只有点“.”可以触发自动补全…

    2022年5月31日
  • 一场影响美国大选的战争利器:邮件安全+协作即时

    一场影响美国大选的战争利器:邮件安全+协作即时

    2022年3月4日
  • 视频压缩算法的相关知识(转载)

    视频压缩算法的相关知识(转载)视频压缩算法的相关知识视频压缩的基本原理,一些常见压缩算法的概念视频压缩算法的相关知识视频压缩基本概念视频压缩算法的相关知识MPEG-1MPEG视频压缩编码后包括三种元素:I帧(I-fram

    2022年7月2日
  • 易文档-快速编写专业漂亮的API文档,产品文档,使用手册

    易文档https://easydoc.top让您轻松编写和维护高质量的文档。从需求文档、API文档、部署文档到使用手册,多种定制文档编辑器,满足您整个开发周期需求;支持接口在线测试,一键生成mock配置。极致的编写体验,优雅的排版,让文档成为一种乐趣。查看示例文档查看使用技巧…

    2022年4月5日
  • win10 tomcat闪退[通俗易懂]

    win10 tomcat闪退[通俗易懂]1.环境变量配置CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\lib\servlet-api.jar;%TOMCAT_HOME%\BIN Path:E:\mysql-5.6.39-winx64\bin;C:\ProgramData\Oracle\Java\javapath;%JAVA_HOME%\bin;…

    2022年5月29日
  • vscode新建html文件并快速生成标准的html代码_用vscode写一个html页面

    vscode新建html文件并快速生成标准的html代码_用vscode写一个html页面在vscode中新建html文件的两种方法:第一个方法:1点击菜单【文件】,如图所示。2点击【新建文件】,如图所示。3就会创建一个没有命名的文件,如图所示。4点击选择语言开始,会弹出选择语言模式,在自动检测的下拉菜单中选择html,一个没有命名的html文件就创建好了。5点击保存或者另存为,给没有命名的html起个名字,可以起字母,数字,中文,起好名字,点击保存,一个html文件就创建好了。6我们在html文件上输入【!】叹号(在英文状态下),然后按键盘的【Tab】键,只

    2022年8月22日

发表回复

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

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