最大矩形面积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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ioctl与FIONREAD

    ioctl与FIONREADFIONREAD,就是返回缓冲区有多少字节。输入有个输入缓冲区,用ioctl(0,FIONREAD,&nread);能得到缓冲区里面有多少字节要被读取。值放在nread里面了。然后就可以read了。nread=read(0,buffer,nread);

    2022年7月23日
    9
  • 罗盘时钟代码[通俗易懂]

    罗盘时钟代码[通俗易懂]HTML<%@pagecontentType=”text/html;charset=UTF-8″language=”java”%><!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><metaname=”viewport”content=”width=device-width,initial-scale=1.0″>&lt

    2022年6月28日
    45
  • 前后端分离架构概述「建议收藏」

    1、背景&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这

    2022年4月6日
    58
  • Pytest(11)allure报告[通俗易懂]

    Pytest(11)allure报告[通俗易懂]前言allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面。mac环境:

    2022年7月31日
    10
  • 激光slam_高德导航术语理解

    激光slam_高德导航术语理解ROS激光SLAM导航理解注:最近学习ROS的导航,需要理清ROS的SLAM、环境感知(costmap)、与导航算法。为防止自己忘记,将觉得有价值的内容摘抄于此。文章目录ROS激光SLAM导航理解激光SLAM基本原理基本原理1、占据栅格地图基本原理2、导航基本原理SLAM与导航系统框架:激光SLAM系统框架建图系统框架导航系统框架`move_base`中的使用运用`plugins`Cost…

    2022年8月23日
    12
  • Linux推荐网站

    Linux推荐网站

    2021年4月29日
    110

发表回复

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

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