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

【LeetCode热题100】【栈】柱状图中最大的矩形

题目链接:84. 柱状图中最大的矩形 - 力扣(LeetCode)

要找最大的矩形就是要找以每根柱子为高度往两边延申的边界,要作为柱子的边界就必须高度不能低于该柱子,否则矩形无法同高,也就是需要找出以每根柱子为高、往两边找更低的柱子作为当前矩形的边界(不含)

可以用一个单调递增栈,存储下标,一直记录更高的柱子,一旦碰到低的柱子,此时栈顶可作为矩形的高,当前柱子作为右边界(不含),栈顶往下一个元素可作为左边界(不含),计算完成后弹出栈顶,这样可以以每个柱子的高度为矩形的高计算一次面积,且边界都是尽可能延申的

class Solution {
public:int largestRectangleArea(vector<int> &heights) {int ans = 0;heights.insert(heights.begin(), 0); // 尾哨兵heights.push_back(0); // 头哨兵stack<int> plus; // 单调递增栈for (int i = 0; i < heights.size(); i++) {while (!plus.empty() && heights[i] < heights[plus.top()]) { // 找到更低的了,说明找到边界int height = heights[plus.top()];plus.pop();ans = max(ans, height * (i - plus.top() - 1));}plus.push(i);}return ans;}
};
http://www.lryc.cn/news/334536.html

相关文章:

  • 谷歌浏览器插件开发速成指南:弹窗
  • Lakehouse 大数据概念
  • MySQL学习笔记(二)
  • Verilog语法——按位取反“~“和位宽扩展的优先级
  • Navicat工具使用
  • linux常用指令(一)——mv、rm、which、find
  • lottery-攻防世界
  • 深入理解指针2:数组名理解、一维数组传参本质、二级指针、指针数组和数组指针、函数中指针变量
  • 【C/C++】C语言实现单链表
  • VBA数据库解决方案第九讲:把数据库的内容在工作表中显示
  • 蓝桥杯刷题-12-公因数匹配-数论(分解质因数)不是很理解❓❓
  • 机器视觉学习(十二)—— 绘制图形
  • 软考信息处理技术员2024年5月报名流程及注意事项
  • linux:du和df区别
  • MacOS Docker 部署 Redis 数据库
  • 个推助力小米汽车APP实现智能用户触达,打造智能出行新体验
  • 科研 | SCI、SCIE、ESCI、JIF、IF、IEEE Fellow
  • 10倍提效!用ChatGPT编写系统功能文档。。。
  • 【Linux进阶之路】地址篇
  • 代码随想录第34天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
  • Rust线程间通信通讯channel的理解和使用
  • Vue3组件基础示例
  • 如何使用PL/SQL Developer工具导出clob字段的表?
  • 蓝桥杯刷题 深度优先搜索-[NewOJ P1158]N皇后(C++)
  • python实例2.2:编写一个装饰器,计算任何一个函数执行的时间(详解及其知识点拓展)
  • Jenkins 持续集成 【CICD】
  • 【CHI】(十二)Memory Tagging
  • Vue - 你知道Vue组件之间是如何进行数据传递的吗
  • IP网络对讲广播系统审计
  • 蓝桥杯刷题--python38