文章收录于LeetCode专栏
LeetCode地址
柱状图中最大的矩形
题目
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。
- 示例1
**输入:**heights = [2,1,5,6,2,3]
**输出:**10
**解释:**最大的矩形为图中红色区域,面积为 10
- 示例2
输入: heights = [2,4]
输出: 4
双指针暴力法
算法思路
算法题目是需要从给定的柱子中寻找两个柱子包裹形成面积最大矩形,即两个柱子间的间距为矩形的宽,两个柱子较短的一个的高为矩形的高。暴力法其实就是经过一次遍历,以每次得到的柱子的高度作为原点左右扩散,寻找第一个小于当前柱子高度的柱子作为边界。
为什么要寻找第一个小于当前柱子高度的柱子呐?因为只要有小于当前柱子高度的柱子,就说明不能再以当前遍历所得到的柱子的高度为矩形的高计算面积。
核心思想就是寻找第一个小于当前柱子高度的柱子作为边界。
编码
class Solution {
public int largestRectangleArea(int[] heights) {
if(heights.length == 0){
return 0;
}
int max = 0;
for(int i=0