Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.
Above is a histogram where width of each bar is 1, given height =[2,1,5,6,2,3].
The largest rectangle is shown in the shaded area, which has area =10unit.
For example,
Given height =[2,1,5,6,2,3],
return10.
public class Solution {
public int largestRectangleArea(int[] height)
{
if(height.length==0||height==null)
return 0;
int n=height.length;
int[] arr = new int[n];// 申请一个额外的数组
arr[0] = height[0];//用来存放n-i的最低高度高度
int max = height[0]; // 最大面积
for(int i=1; i<n; i++)
{
arr[i] = height[i];//第i个元素的高度
for(int j=i-1; j>=0; j--)//j从i-1到0往回遍历
{
if(arr[j]>arr[i])//当j的高度高时
{
if(arr[j]*(i-j)>max)//判断第j个元素的高度
max = arr[j]*(i-j);
arr[j] = arr[i];
}else break;
}
}
for(int i=0; i<n; i++)
{
if(arr[i]*(n-i)>max)
max = arr[i]*(n-i);
}
return max;
}
}