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

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

以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]

图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。

示例:

输入: [2,1,5,6,2,3]
输出: 10

思路:用二分法,不过普通的二分法leetcode会超时,所以增加了一个标志位判断是否[left,right]都是递增的,如果是递增的就直接返回,不用继续二分了,节省了时间。

class Solution {
public:int largestRectangleArea(vector<int>& heights) {return get_maxval(0, heights.size()-1, heights);}int get_maxval(int left,int right,vector<int>& heights){if(left>right){return 0;}int min_index = left;bool increase = true;for(int i=left+1;i<=right;++i){if(heights[i-1]>heights[i]){increase = false;}if(heights[i]<heights[min_index]){min_index = i;}}if(increase){int maxval = 0;for(int i=left;i<=right;++i){maxval = max((right-i+1)*heights[i],maxval);}return maxval;}return max(heights[min_index]*(right-left+1), max(get_maxval(left,min_index-1,heights),get_maxval(min_index+1,right,heights)));}
};

柱状图中最大的矩形—leetcode84相关推荐

  1. LeetCode--84.柱状图中最大的矩形(暴力法,单调栈)

    柱状图中最大的矩形(暴力法,单调栈) 1. 题目描述 2. 题目分析 3. C语言实现 3.1 暴力法 3.2 单调栈 4. Java实现 1. 题目描述 难度:困难 2. 题目分析 这道题有两种解法 ...

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

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

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

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

  4. 在柱状图中找最大矩形——O(n)时间复杂度java实现

    在柱状图中找最大矩形--O(n)时间复杂度java实现 ZZ:http://blog.csdn.net/xybsos/article/details/8049048 具体题目如下:给一组非负的整数来表 ...

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

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

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

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

  7. 柱状图中最大的矩形多种解法

    一.前言 问题来源LeetCode 84,难度:困难 问题链接:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/ 二.题 ...

  8. leetcode必刷题(四)lee75 颜色分类、lee76 最小覆盖字串、lee78 子集、lee79 单词搜索、lee84 柱状图中最大的矩形、lee85 最大矩形、lee96 不同的二叉搜索树、

    lee75 颜色分类 patition 三个指针 lee76 最小覆盖字串 滑动窗口 lee78 子集 无重复数字 回溯 lee79 单词搜索 回溯 lee84 柱状图中最大的矩形 单调栈 lee85 ...

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

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

最新文章

  1. day10-闭包函数、函数装饰器
  2. Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
  3. wordpress content.php,2020主题:content.php
  4. ES6-7 - 箭头函数的实质、箭头函数的使用场景
  5. 单片机/嵌入式软件架构分层思想
  6. hadoop基本操作命令小结
  7. 《Java8实战》笔记(04):引入流
  8. Bootstrap 多级下拉菜单
  9. Windows 电脑命令一览
  10. 若后台的Activity被系统回收...
  11. 2021最新软件测试V4.0版本教程
  12. 《寄生虫》横扫奥斯卡,Python告诉你这部电影到底好在哪儿?
  13. TSCLIB.DLL函式库使用说明
  14. python版武侠小说男女侠姓名生成器
  15. 运行docker镜像,出现Exited (137) 5 seconds ago问题
  16. 【柒穆雨】什么是平面设计,学习平面设计需要具备什么条件?
  17. 原生javascript手风琴图片切换案例
  18. 微信小程序开发技术预研分析报告
  19. OMAP3530资料
  20. Minecraft基岩版电脑端游戏按键整合

热门文章

  1. php统计变量的位数,php实现统计二进制中1的个数算法示例
  2. Python【每日一问】08
  3. python学习笔记(12)--程序设计方法学
  4. 合并排序(Java)-解析
  5. HTML 5入门学习,源码中全部使用HTML 5标签
  6. 修改 wordpress 后台管理员登录地址
  7. 如何开展灰盒测试[1]:灰盒测试优缺点分析
  8. css中实现div的显示和隐藏
  9. Silverlight, B/S or C/S?
  10. [译] APT分析报告:08.漏洞利用图谱–通过查找作者的指纹来寻找漏洞