🎈LeetCode84.柱状图中的最大矩形
链接:84.柱状图中的最大矩形
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积
public static int largestRectangleArea(int[] heights) {
Stack<Integer> st=new Stack<>();
// 数组首尾各加一个0
int[] newHeight=new int[heights.length+2];
newHeight[0]=0;
newHeight[newHeight.length-1]=0;
for(int i=1;i<newHeight.length-1;i++){
newHeight[i]=heights[i-1];
}
heights=newHeight;
int result=0;
// 找左右两边比基准小的
for(int i=0;i<heights.length;i++){
while(!st.isEmpty() && heights[i]<heights[st.peek()]){
int right=i;
int mid=st.peek();
st.pop();
int left=st.peek();
int h=heights[mid];
int w=right-left-1;
int s=h*w;
if(result<s){
result=s;
}
}
st.push(i);
}
return result;
}