classSolution{publicintlargestRectangleArea(int[] heights){int area =0, n = heights.length;// 遍历每个柱子,以当前柱子的高度作为矩形的高 h,// 从当前柱子向左右遍历,找到矩形的宽度 w。for(int i =0; i < n; i++){int w =1, h = heights[i], j = i;while(--j >=0&& heights[j]>= h){
w++;}
j = i;while(++j < n && heights[j]>= h){
w++;}
area = Math.max(area, w * h);}return area;}}
暴力法数组提肯定首先想到用暴力法解,求出所有可能得矩形面积并从中取最大值。但其实不难发现我们并不需要真的求出所有矩形面积,只需要求出在某一柱体的高度下,矩形所能达到的最大宽度,这样就能求出该柱体所对应的最大矩形面积,这样求出所有柱体的最大矩形面积即可得到答案。class Solution { public int largestRectangleArea(int[] heights) { int area = 0, n = heights.length; /.