题目链接:https://leetcode-cn.com/problems/largest-rectangle-in-histogram/
题目描述
分析
1. 暴力
时间负责度:O(n^2)
从左侧遍历,获取最小的高度,宽度即使数组的下标,则最大面积=高度*宽度
代码实现
public enum Q84 {
instance;
// 暴力
public int largestRectangleArea(int[] heights) {
if(heights.length==0)return 0;
if(heights.length==1)return heights[0];
int size=heights.length;
int maxArea=0;
for(int i=0;i<size;i++){
int height=Integer.MAX_VALUE;
for(int j=i;j<size;j++){
height=height>heights[j]?heights[j]:height;
int area=height*(j-i+1);
maxArea=area>maxArea?area:maxArea;
}
}
return maxArea;
}
public static void main(String[] args) {
// assert 10
SystemUtil.print(Q84.instance.largestRectangleArea(new int[]{2,1,5,6,2,3}));
// assert 15
SystemUtil.print(Q84.instance.largestRectangleArea(new int[]{2,1,6,6,2,5,5,5,3}));
}
}