当前位置: 首页 > news >正文

单调栈day54|42. 接雨水(高频面试题)、84. 柱状图中最大的矩形、两道题思维导图的汇总与对比

单调栈day54|42. 接雨水(高频面试题)、84. 柱状图中最大的矩形、两道题思维导图的汇总与对比

  • 42. 接雨水
  • 84. 柱状图中最大的矩形
  • 两道题思维导图的汇总与对比

42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:

img

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

示例 2:

输入:height = [4,2,0,3,2,5]
输出:9

提示:

  • n == height.length
  • 1 <= n <= 2 * 104
  • 0 <= height[i] <= 105
class Solution {
public:int trap(vector<int>& height) {int sum=0;stack<int> st;st.push(0);for(int i=1;i<height.size();i++){if(height[i]<=height[st.top()])st.push(i);else{while(!st.empty()&&height[i]>height[st.top()]){int mid=height[st.top()];st.pop();if(!st.empty()){int h=min(height[st.top()],height[i])-mid;int w=i-st.top()-1;sum+=h*w;}}st.push(i);}}return sum;}
};

具体的分析过程如下面的思维导图所示:
在这里插入图片描述

84. 柱状图中最大的矩形

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

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

示例 1:

在这里插入图片描述

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

提示:

  • 1 <= heights.length <=105
  • 0 <= heights[i] <= 104
class Solution {
public:int largestRectangleArea(vector<int>& heights) {stack<int> st;int result=0;heights.insert(heights.begin(),0);heights.push_back(0);st.push(0);for(int i=0;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 h=heights[mid];int w=i-st.top()-1;result=max(result,h*w);}}st.push(i);}}return result;}
};

具体的分析过程如下面的思维导图所示:
在这里插入图片描述

两道题思维导图的汇总与对比

在这里插入图片描述

http://www.lryc.cn/news/454857.html

相关文章:

  • 关于Excel将列号由字母改为数字
  • 曾黎第二次受邀巴黎时装周看秀 为新疆棉代言引人瞩目
  • No.6 笔记 | Linux操作系统基础:全面概览与核心要点
  • MySQL之分库分表后带来的“副作用”你是怎么解决的?
  • 【Python】Python-JOSE:Python 中的 JSON Web Token 处理库
  • SpringBoot3+Druid YAML配置
  • 【c语言——指针详解(3)】
  • QT系统学习篇(2)- Qt跨平台GUI原理机制
  • 运用MinIO技术服务器实现文件上传——在Linux系统上安装和启动(一)
  • Python技术深度探索:从基础到进阶的实践之旅(第一篇)
  • 利士策分享,旅游是否要舟车劳顿才能尽兴?
  • C++入门——类的默认成员函数(取地址运算符重载)
  • 学习记录:js算法(四十九):二叉树的层序遍历
  • 【PCB工艺】表面贴装技术中常见错误
  • 3.使用条件语句编写存储过程(3/10)
  • Effective C++中文版学习记录(三)
  • VBA学习(76):文件合并神器/代码
  • 非农就业数据超预期,美联储降息步伐或放缓?
  • 每日OJ题_牛客_乒乓球筐_哈希_C++_Java
  • 基于SpringBoot+Vue的酒店客房管理系统
  • 检索增强思考 RAT(RAG+COT):提升 AI 推理能力的强大组合
  • python脚本实现Redis未授权访问漏洞利用
  • 简单线性回归分析-基于R语言
  • 上海理工大学《2023年+2019年867自动控制原理真题》 (完整版)
  • 计算机网络面试题——第三篇
  • Elasticsearch 开放推理 API 增加了对 Google AI Studio 的支持
  • react-问卷星项目(7)
  • 【git】main|REBASE 2/6
  • 51单片机的水质检测系统【proteus仿真+程序+报告+原理图+演示视频】
  • 【python面试宝典7】线程池,模块和包