题目描述:
1.暴力解法
思路:只需要遍历计算出每一个柱形为高度的的最大矩形的面积。
就相当于依次遍历柱形的高度,对于每一个高度分别向两边扩散,求出以当前高度为矩形的最大宽度多少。
就可以分为两小步:
- 左边看一下,看最多能向左延伸多长,找到大于等于当前柱形高度的最左边元素的下标;
- 右边看一下,看最多能向右延伸多长;找到大于等于当前柱形高度的最右边元素的下标。
操作每一个位置,得到每一个位置的最大矩形的面积,求出最大值。
代码实现:
public int largestRectangleArea(int[] heights) {
int len = heights.length;
if (len == 1) return heights[0];