Largest Rectangle in Histogram
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 = 10 unit.
For example,
Given height = [2,1,5,6,2,3],
return 10.
思路:假设第n个柱形高度即为最大直方图的高,左右两个指针,分别代表直方图的最左侧位置和最右侧位置。那么,最大面积 area= (right-left+1)*h
package leetcode.largestRectangleInHistogram;
public class LargestRectangleHistogram {
public static void main(String[] args) {
int[] heights={2,1,5,6,2,3};
int max=0;
for(int i=0;i<heights.length;i++){
int left=i;
int right=i;
while(--left>=0){
if (heights[left]<heights[i]) {
break;
}
}
while(++right<heights.length){
if (heights[right]<heights[i]) {
break;
}
}
int area=(--right-++left+1)* heights[i];
max=area>max?area:max;
System.out.println(max);
}
}
}
本文介绍了一种寻找直方图中最大矩形面积的方法。通过双指针技术,遍历每个柱子作为候选最大高度,计算可能的最大矩形面积。此算法适用于解决特定类型的数据结构和算法问题。
904

被折叠的 条评论
为什么被折叠?



