LeetCode 84 柱状图中最大的矩形

news/2024/11/8 18:40:08/

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

求在该柱状图中,能够勾勒出来的矩形的最大面积。

示例 1:

在这里插入图片描述

输入:heights = [2,1,5,6,2,3]
输出:10
解释:最大的矩形为图中红色区域,面积为 10

示例 2:
在这里插入图片描述

输入: heights = [2,4]
输出: 4

思路:

该题目和接雨水类似,但是该题中需要先在heights中首尾加入0,
原因是:如果是单调递减的数组,加入到递减的栈中,那么没有了计算面积
如果是单调递增的数组,那么左边没有0也无法找到左边比其小的,也无法计算
如果heights[i] >= heights[st.top()]直接加入,因为是单调减栈
否则就进入计算,当前栈顶元素下标作为中间元素,再弹出
弹出后,栈顶的元素,一定是小于刚弹出的元素下标对应的值的,因此是单调减栈
而当前遍历i位置元素也是小于中间元素的,因此就找到了中间元素左右两边的第一小值
这样就得到了宽,而高就是中间元素对应的高,
逐个遍历后,再从所有结果中得到最大的面积

class Solution {
public:int maxtest(vector<int>& heights) {int result = 0;stack<int> st;heights.push_back(0);heights.insert(heights.begin(), 0);st.push(0);for (int i = 1; i < heights.size(); i++) {if (heights[i] >= heights[st.top()]) {st.push(i);}else {while (!st.empty()&& heights[i] < heights[st.top()]) {int mid = st.top();st.pop();if (!st.empty()) {int left = st.top();int right = i;int w = right - left - 1;int h = heights[mid];result = max(result, w * h);}}st.push(i);}}return result;}
};int main() {vector<int> heights = { 2, 1, 5, 6, 2, 3 };Solution ss;cout << ss.maxtest(heights) << endl;return 0;
}

http://www.ppmy.cn/news/82196.html

相关文章

小红书数据分析:首播卖6亿,小红书直播开启新纪元!

5月22日&#xff0c;章小蕙在小红书开启了第一场带货直播。继董洁之后&#xff0c;小红书又迎来一位超级带货KOL。 据千瓜数据显示&#xff0c;相关话题#章小蕙小红书直播#上线不到30天&#xff0c;话题浏览量就高达2814.89万&#xff0c;笔记互动量达22.24万。 图 | 千瓜数据…

使用nsenter检查docker网络

文章目录 一 环境准备二 需求三 解决 一 环境准备 虚拟机IP&#xff1a;10.0.0.100 拉取的三个镜像&#xff0c;镜像名称与ID如下&#xff1a; [rootcanway01 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED …

设计模式 (1) 入门

目录 设计模式系列文章主要包含 1.什么是设计模式&#xff1f; 2.设计模式的分类 2.1 创建型设计模式 2.2 结构型设计模式 2.3 行为型设计模式 设计模式系列文章主要包含 设计模式 (一) 入门 设计模式 (二) 创建型设计模式系列 设计模式 (三) 结构型设计模式系列 …

【Linux系列P2】Linux基本指令知识(带图演示,精炼)

前言 大家好&#xff0c;这里是YY的Linux系列part2&#xff1b;本章主要内容面向能使用Linux的老铁&#xff0c;主要内容含【设置普通用户】【Linux基本知识】【基本指令大全】 在下一章节【Linux系列part3】中,YY将手把手讲述Linux的权限知识&#xff0c;欢迎订阅YY的Linux专栏…

Redis缓存架构详解

文章目录 Redis缓存结构详解前言Redis 缓存架构redis 和db数据一致性先写db还是写redis如果是先写db,再删除缓存呢&#xff1f;延迟双删 简单的缓存,并发不高,没啥流量简单的缓存,并发高,但是存在redis和 Db 双写不一致,读写并发不一致问题解决方案 1解决方案 2解决方案 3读写锁…

Windows 上安装和启动 Nacos 2.2.2 最新版本

文章目录 前言版本声明本地启动1. 下载 Nacos2. 开启鉴权配置3. 持久化数据库4. 启动 Nacos5. 启动测试 联系我 前言 本文旨在为您详细介绍如何安装和启动 Nacos 2.2.2 的最新版本&#xff0c;以及为 youlai-mall 开源商城版本的升级做好准备工作。 版本声明 名称版本操作系…

智慧城市同城V4小程序V2.24独立开源版 + 全插件+VUE小程序开源前端+最新用户授权接口

智慧城市同城V4小程序V2.22开源独立版本月最新版&#xff0c;与上一版相比修复了一些小细节&#xff0c;功能本身并无大的变化。新版系统包含全插件、包括很多稀缺收费的插件都在里面如括招聘、 家政等&#xff0c;外加小程序的VUE开源前端&#xff0c;整个系统全开源&#xff…