Closed 1nfo closed 7 years ago
public class Solution {
public int largestRectangleArea(int[] heights) {
int ret = 0;
Stack<Integer> stack = new Stack<>();
for(int i=0;i<=heights.length;i++){
int r = (i==heights.length?0:heights[i]);
int l = stack.isEmpty()?0:heights[stack.peek()];
if(l>r){
int height = heights[stack.pop()];
ret = Math.max(ret,height*(stack.isEmpty()?i:i-stack.peek()-1));
i--;
}
else if (i+2>heights.length||heights[i]!=heights[i+1]){
stack.push(i);
}
}
return ret;
}
}