leetcode 84. 柱状图中最大的矩形

news2024/11/25 20:26:44

2023.8.30

         本题和接雨水 有点类似,依旧用双指针来解。但是本题要记录的是当前柱子 左右两侧第一个小于该柱子的索引。将其保存在两个数组中,最后再求最大面积。代码如下:

class Solution {
public:
    int largestRectangleArea(vector<int>& heights) {
        vector<int> min_left_index(heights.size()); //记录当前柱子 左侧第一个小于该柱子的索引
        vector<int> min_right_index(heights.size()); //记录当前柱子 右侧第一个小于该柱子的索引

        min_left_index[0] = -1;
        for(int i=1; i<heights.size(); i++)
        {
            int temp = i-1;
             while(temp>=0 && heights[temp]>=heights[i]) 
             {
                 temp = min_left_index[temp];
             }
             min_left_index[i] = temp;
        }

        min_right_index[heights.size()-1] = heights.size();
        for(int i=heights.size()-2; i>=0; i--)
        {
            int temp = i+1;
            while(temp<=heights.size()-1 && heights[temp]>=heights[i])
            {
                temp = min_right_index[temp];
            }
            min_right_index[i] = temp;
        }
        //求最大面积
        int ans = 0;
        for(int i=0; i<heights.size(); i++)
        {   
            ans = max(ans , heights[i]*(min_right_index[i]-min_left_index[i]-1));
        }
        return ans;
    }
};

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/949342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图表背后的故事:数据可视化的威力与影响

数据可视化现在在市场上重不重要&#xff1f;这已经不再是一个简单的问题&#xff0c;而是一个不可忽视的现实。随着信息时代的来临&#xff0c;数据已经成为企业和组织的核心资产&#xff0c;而数据可视化则成为释放数据价值的重要工具。 在当今竞争激烈的商业环境中&#xf…

css换行

强制显示一行&#xff0c;超出... .box{white-space: nowrap; /* 强制显示一行 */overflow: hidden;text-overflow: ellipsis; /* 超出... */ } 自动换行 一般默认制动换行 .box1{word-wrap:break-word; } 显示2行&#xff0c;超出... .box2 {overflow: hidden;display: -…

SpringBoot初级开发--服务请求(GET/POST)所有参数的记录管理(8)

服务端在定位错误的时候&#xff0c;有时候要还原现场&#xff0c;这就要把当时的所有入参参数都能记录下来&#xff0c;GET还好说&#xff0c;基本NGINX都会记录。但是POST的请求参数基本不会被记录&#xff0c;这就需要我们通过一些小技巧来记录这些参数&#xff0c;放入日志…

Mybatis1.5 单个条件(动态SQL)

1.5 单个条件&#xff08;动态SQL&#xff09; 1.5.1 编写接口方法1.5.2 编写SQL语句1.5.3 编写测试方法 如上图所示&#xff0c;在查询时只能选择 品牌名称、当前状态、企业名称 这三个条件中的一个&#xff0c;但是用户到底选择哪儿一个&#xff0c;我们并不能确定。这种就属…

【小吉测评】哔哩哔哩接入AI?!效果如何?

文章目录 &#x1f384;前言⭐申请方式&#x1f3f3;️‍&#x1f308;注意 &#x1f6f8;简介&#x1f354;上手体验&#x1f6f8;进行数学计算&#x1f970;可以写代码吗 &#x1f384;前言 最近人工智能特别火&#xff0c;chatgpt&#xff0c;Claude2&#xff0c;文心一言等…

怎么把图片放大并且清晰?有详细的方法步骤

怎么把图片放大并且清晰&#xff1f;数字图像处理中的图片放大是许多行业和领域中广泛应用的一项技术。常规的放大方法通过插值或复制像素的方式增加像素数&#xff0c;但这会导致失真和模糊。无损放大是一种特殊的放大方法&#xff0c;它可以通过数学算法来增加图片的尺寸&…

从Gamma空间改为Linear空间会导致性能下降吗

1&#xff09;从Gamma空间改为Linear空间会导致性能下降吗 2&#xff09;如何处理没有使用Unity Ads却收到了GooglePlay平台的警告 3&#xff09;C#端如何处理xLua在执行DoString时候死循环 4&#xff09;Texture2DArray相关 这是第350篇UWA技术知识分享的推送&#xff0c;精选…

Transformer升级之路:逆用Leaky ReRoPE

©PaperWeekly 原创 作者 | 苏剑林 单位 | 科学空间 研究方向 | NLP、神经网络 在《Transformer升级之路&#xff1a;无限外推的ReRoPE&#xff1f;》中&#xff0c;笔者提出了 ReRoPE 和 Leaky ReRoPE&#xff0c;诸多实验结果表明&#xff0c;它们能够在几乎不损失训练效…

【设计模式】装饰者模式

目录 一、定义二、结构三、优点四、使用场景五、代码示例六、截图示例 一、定义 1.在不改变现有对象结构的情况下&#xff0c;动态给该对象添加额外功能的模式 2.类B继承于类A&#xff0c;并将类A作为B类的属性&#xff08;B类聚合A类&#xff09; 3.BufferedInputStream、Buff…

单元测试用例mock的使用方法

单元测试用例mock的使用方法 提升代码测试覆盖率的关键策略 为什么单元测试是如此重要&#xff1f; 在软件开发中&#xff0c;单元测试是一个关键的环节&#xff0c;可以确保代码的质量和稳定性。而在进行单元测试时&#xff0c;使用mock对象可以帮助我们更好地测试代码逻辑…

MySQL8.Xx安装控制台未生成随机密码解决方案

MySQL8.xx一主两从复制安装与配置 MySQL8.XX随未生成随机密码解决方案 MySQL8.0.30一主两从复制与配置(一) 一: Mysql 安装时控制台未生成密码 安装过程中解压或者安装时报错等,这种情况一般是因网络等其他原因导致下载的安装包不完整&#xff0c; 重新下载安装即可; 二:…

域名解析与http服务器实现原理

域名解析函数gethostbyname struct hostent *gethostbyname(const char *name); 主机结构在<netdb.h>中定义如下&#xff1a; 结构的成员包括&#xff1a; h_name&#xff1a;主机的正式名称 h_aliases&#xff1a;主机的备用名称数组&#xff0c;以NULL结尾指针 h_…

企业为什么要做自动化测试?我们该如何学习自动化测试?

作为一名大厂测试开发&#xff0c;编写自动化脚本&#xff0c;俨然成为一种必备的技能。 为什么要做自动化测试&#xff1f; 那企业或者是我们测试人员为什么要做自动化测试呢&#xff1f; 如果在前两年&#xff0c;可能10个测试员有6个都是做的功能测试&#xff0c;但随着测…

ToBeWritten之防御规避战术

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

day-05 TCP半关闭 ----- DNS ----- 套接字的选项

一、优雅的断开套接字连接 之前套接字的断开都是单方面的。 &#xff08;一&#xff09;基于TCP的半关闭 Linux的close函数和windows的closesocket函数意味着完全断开连接。完全断开不仅不能发送数据&#xff0c;从而也不能接收数据。在某些情况下&#xff0c;通信双方的某一方…

2023高教社杯数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

众创空间、孵化器、共享办公这三者之间的异同点

众创空间、孵化器和共享办公都是创新型创业生态中重要的组成部分&#xff0c;但它们在服务方式、功能和作用上有所区别。 众创空间是一种开放式的创新型创业生态&#xff0c;旨在通过提供共享办公空间、创业培训、融资对接等服务&#xff0c;帮助初创企业加速成长。众创空间注…

小区物业这个雷区,千万别踩!

在现代社会中&#xff0c;电力是我们日常生活不可或缺的一部分&#xff0c;而小区物业配电柜监控则扮演着保障电力稳定供应和管理的关键角色。 配电柜监控系统通过实时监测电力参数、设备状态和环境情况&#xff0c;我们能够早期发现潜在的问题&#xff0c;迅速采取行动&#x…

【HSPCIE仿真】输入网表文件(3)子电路描述语句

子电路描述语句 1. 子电路的定义定义子电路的基本语法子电路终止语句子电路的调用语句全局节点(.gloab)示例 2. 基于子电路执行多次分析 HSPICE 允许用户在程序执行过程中调用由各种 HSPICE 元件和器件构成的子电路&#xff0c;即电路结构的层次化描述。 子电路是以 .SUBCKT 或…

WebSocket--技术文档--基本概念--《快速了解WebSocket协议》

阿丹&#xff1a; 不断学习新技术&#xff0c;丰富自己了解更多才能扩展更多世界可能。 官网 WebSocket首页、文档和下载 - HTML5开发相关 - OSCHINA - 中文开源技术交流社区 软件简介 WebSocket 是 HTML5 开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。 WebS…