求在该柱状图中,能够勾勒出来的矩形的最大面积。
以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。
图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。
示例:
输入: [2,1,5,6,2,3]
输出: 10
class Solution {
private:
int res;
public:
int largestRectangleArea(vector<int>& heights) {
res = 0;
if(heights.size() == 0)
return res;
Divide(heights,0,heights.size()-1);
return res;
}
void Divide(vector<int>& heights,int left,int right){
if(left > right)
return ;
int min = heights[left];
int index = left;
for(int i=left+1;i<=right;++i)
if(min > heights[i]){
min = heights[i];
index = i;
}
res = max(res,(right-left+1)*min);
Divide(heights,left,index-1);
Divide(heights,index+1,right);
}
};