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

代码随想录算法训练营第六十天 | 84.柱状图中最大的矩形

84.柱状图中最大的矩形

题目链接:84. 柱状图中最大的矩形

本题与接雨水相近。按列来看,是要找到每一个柱子左右第一个比它矮的柱子,即对于该柱子来说所能组成的最大面积,将每个柱子所能得到的最大面积进行对比最终得到最大矩形。

双指针法

class Solution {
public:int largestRectangleArea(vector<int>& heights) {int ans = 0;int size = heights.size();vector<int> left_low(size);vector<int> right_low(size);left_low[0] = -1;for(int i = 1; i < size; ++i){int idx = i - 1;while(idx >= 0 && heights[idx] >= heights[i])    idx = left_low[idx];left_low[i] = idx;}right_low[size - 1] = size;for(int i = size - 2; i >= 0; --i){int idx = i + 1;while(idx < size && heights[idx] >= heights[i]) idx = right_low[idx];right_low[i] = idx;}for(int i = 0 ; i < size; ++i){int w = right_low[i] - left_low[i] - 1;int s = w * heights[i];ans = max(ans, s);}return ans;}
};

单调栈法

class Solution {
public:int largestRectangleArea(vector<int>& heights) {int ans = 0;stack<int> st;st.push(0);for(int i = 1; i <= heights.size(); ++i){while(!st.empty() && (i == heights.size() || heights[i] < heights[st.top()])){int idx = st.top(); st.pop();int w = i;if(!st.empty()) w -= st.top() + 1;int s = w * heights[idx];ans = max(ans, s);}st.push(i);}return ans;}
};

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

相关文章:

  • C#结合JavaScript实现多文件上传
  • STM32——继电器
  • 性能监控体系:InfluxDB Grafana Prometheus
  • CS106L2023 and CS106B 环境配置(详细教程)
  • Docker-多容器应用
  • Golang导入导出Excel表格
  • 基于Maven的Spring Boot应用版本号获取解析
  • LLM微调(二)| 微调LLAMA-2和其他开源LLM的两种简单方法
  • AVP对纵向控制ESP(Ibooster)的需求规范
  • 小模型学习(1)-人脸识别
  • sublime Text使用
  • 基于深度学习的yolov7植物病虫害识别及防治系统
  • Leetcode 2963. Count the Number of Good Partitions
  • C语言动态内存经典笔试题分析
  • 截断正态分布stats.truncnorm()X.rvs(10000)
  • 第59天:django学习(八)
  • 举例说明自然语言处理(NLP)技术。
  • echarts地图marker自定义图标并添加点击事件
  • C盘瘦身,C盘清理
  • STM32F103
  • Unity使用打成图集的Sprite作为模型贴图使用的问题
  • el-select赋值对象是对象时,出现赋值与展示不一致问题
  • 在 Node-RED 中引入 ECharts 实现数据可视化
  • docker资源限制
  • 探索HarmonyOS_开发软件安装
  • CSS中控制元素水平布局的七个属性
  • YOLOv8改进 | 2023检测头篇 | 利用AFPN改进检测头适配YOLOv8版(全网独家创新)
  • 测试经理的职责是什么?
  • LinuxBasicsForHackers笔记 -- BASH 脚本
  • 定时任务特辑 | Quartz、xxl-job、elastic-job、Cron四个定时任务框架对比,和Spring Boot集成实战