您的位置:首页 > 其它

leetcode 84 Largest Rectangle in Histogram

2016-06-03 17:42 330 查看
public class Solution {
public int largestRectangleArea(int[] heights) {
// Stack h = new Stack();
if(heights == null || heights.length==0) return 0;
else{
int ractangle=0 ;
int[] left = new int[heights.length];
int[] right = new int[heights.length];
left[0] = -1;
right[heights.length-1] = heights.length;//初始化左右边界
for(int i=1;i<heights.length;i++){

int z = i-1;
while(z>=0 && heights[i]<=heights[z]){
z = left[z];
}
left[i] = z;

//后右边界

//ractangle = (heights[i] * (j+k+1))>ractangle?ractangle = heights[i] *(j+k+1):ractangle;

}
for(int i=heights.length-2;i>=0;i--){
int z = i+1;
while(z<heights.length && heights[i]<=heights[z]){
z = right[z];
}
right[i] = z;
}
for(int i=0;i<heights.length;i++){
ractangle = Math.max(ractangle,heights[i]*(right[i]-left[i]-1));
}
return ractangle;
}
}
}
时间复杂度为o(n),运行4ms,使用数组求左右边界,并未使用单调栈
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: