文章目录

  • 1. 题目
  • 2. 解题

1. 题目

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

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


以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。
图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。

2. 解题

类似题目:
LeetCode 11. 盛最多水的容器(双指针)
LeetCode 42. 接雨水(双指针、单调栈)
LeetCode 85. 最大矩形(DP,难)

  • 单调递增栈,遇到递减的进行处理,最后未处理完的,在末尾加个0(遇到递减了,处理剩余的)
  • 栈内左侧的都比栈顶小,当前的也比其小,那么以栈顶为高的矩形能够扩展的宽度就知道了,宽度 = 当前位置 减去 栈顶左侧位置,再减1
class Solution {public:int largestRectangleArea(vector<int>& h) {h.push_back(0);int i, n = h.size(), maxArea = 0, prevH, width;stack<int> s;//单调递增栈,存储下标for(i = 0; i < h.size(); ++i){while(!s.empty() && h[s.top()] > h[i])//前面大于我的,遇到下降{prevH = h[s.top()];s.pop();width = (s.empty() ? i : i-s.top()-1);maxArea = max(maxArea, prevH*width);}s.push(i);}return maxArea;}
};

20 ms 8.7 MB

LeetCode 84. 柱状图中最大的矩形(单调递增栈)相关推荐

  1. c语言力扣l最大矩形,leetcode 84柱状图中最大的矩形,利用单调栈求解l

    利用单调了栈求解leetcode 84柱状图中最大的矩形 image image 利用单调递增栈的方式来实现,计算发生在每次弹出栈顶的操作过程中 单调递增栈的操作步骤 1.如果栈为空或者栈顶元素比入栈 ...

  2. 单调栈:leetcode 84. 柱状图中最大的矩形/85最大矩形

    84. 柱状图中最大的矩形 遍历数组,以每一个元素作为高,向左右两边拓展,遇到第一个比该元素小的位置停下 图片源自leetcode力扣 一.暴力解法(超时) 遍历数组,以每一个元素作为高,向左右两边拓 ...

  3. java 柱状图 宽度_Java实现 LeetCode 84 柱状图中最大得矩形

    84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的 ...

  4. LeetCode 84.柱状图中最大的矩形

    今天还是分享一道才刷过的题目, 柱状图中最大的矩形,这道题根上一篇我分享的接雨水类似,都是可以用双指针,动态规划(双指针加备忘录),单调栈来算 这道题的话三种方法都写了,双指针会超时,优化一下备忘录是 ...

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

    给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [ ...

  6. LeetCode 84. 柱状图中最大的矩形(Largest Rectangle in Histogram)

    题目描述: 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个柱子的宽度为 1,给定 ...

  7. LeetCode 85. 最大矩形(DP/单调递增栈,难)

    文章目录 1. 题目 2. 解题 2.1 DP 2.2 单调递增栈 1. 题目 给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积. 示例: 输入: [[" ...

  8. 【LeetCode】【HOT】84. 柱状图中最大的矩形(栈)

    [LeetCode][HOT]84. 柱状图中最大的矩形 文章目录 [LeetCode][HOT]84. 柱状图中最大的矩形 package hot;import java.util.ArrayDeq ...

  9. 用python 求矩形最大面积_LeetCode 84. 柱状图中最大的矩形 | Python

    84. 柱状图中最大的矩形 题目 给定 n 个非负整数,用来表示柱状图中各个柱子的高度.每个柱子彼此相邻,且宽度为 1 . 求在该柱状图中,能够勾勒出来的矩形的最大面积. 以上是柱状图的示例,其中每个 ...

最新文章

  1. php udp发送和接收_php socket通信(tcp/udp)实例分析
  2. android 开启一个定时线程_Android中定时执行任务的3种实现方法
  3. 分享云及人工智能的一些学习资源和学习心得
  4. 公司间采购的后台配置备忘录
  5. 计算机应用技术 平面设计,全国信息化计算机应用技术水平教育考试试卷 平面设计师...
  6. Spring 自动装配 ‘byType’
  7. jsonobject转list集合_怎样优雅的操作集合,CollectionUtils工具类正确使用姿势
  8. 【工程项目经验】VMware The path is not a valid path to the 3.10.0-229.el7.x86_64
  9. 标注工具——yarn的学习笔记
  10. java实战 ——分类模块的开发
  11. 原理探究——空间平滑MUSIC算法
  12. Flutter格式化电话号码
  13. 传导EMI抑制-π型滤波器设计
  14. DPDK Release 20.08
  15. 许晓斌_Maven实战(五)——自动化Web应用集成测试
  16. 硬盘主分区和逻辑驱动器的区别
  17. 告别传统机房:3D 机房数据可视化实现智能化与VR技术的新碰撞
  18. 哈工程和杭电计算机,哈工程算名校吗?为什么说千万别来哈工程?
  19. java interrupt详解_Java线程源码解析之interrupt
  20. selenium——鼠标操作ActionChains:点击、滑动、拖动

热门文章

  1. 电脑开机3秒就重启循环_电脑修好后客户不愿支付上门费,行,那电脑开机60秒自动关机吧!...
  2. Socket的3次握手链接与4次断开握手
  3. js unescape 对应php的函数,php实现Javascript的escape和unescape函数
  4. 网络:常见的端口号及分类
  5. 驱动面试、笔试常见问题
  6. 链表创建为什么需要使用内存分配?
  7. python3一个简单的网页抓取
  8. Linq 实现sql中的not in和in条件查询
  9. 2015前端生态发展回顾(转)
  10. Tracing mysqld Using DTrace