leetcode:84. 柱状图中最大的矩形(java)

今天药忘吃喽~ 2021-09-28 08:54 440阅读 0赞

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

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

histogram.png

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

histogram_area.png

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

示例:

  1. 输入: [2,1,5,6,2,3]
  2. 输出: 10
  3. public int largestRectangleArea(int[] heights) {
  4. int max = 0;
  5. for (int i = 0; i < heights.length; i++) {
  6. int mid = 0;
  7. int left = 0;
  8. int right = 0;
  9. mid = i;
  10. left = i - 1;
  11. right = i + 1;
  12. int wide = 1;
  13. while (left >= 0 && heights[left] >= heights[mid]) {
  14. wide++;
  15. left--;
  16. }
  17. while (right < heights.length && heights[right] >= heights[mid]) {
  18. wide++;
  19. right++;
  20. }
  21. int area = 0;
  22. area = wide * heights[mid];
  23. if (area > max) {
  24. max = area;
  25. }
  26. }
  27. return max;
  28. }

发表评论

表情:
评论列表 (有 0 条评论,440人围观)

还没有评论,来说两句吧...

相关阅读

    相关 leetcode 84. 矩形

    思路: 单调栈    维护一个单调上升的栈。因为保证单调上升以后,从后面开始,每一个都可以作为高。为了方便计算宽度。先压入一个-1即可。 宽度计算的原理:取当前栈顶的元素