题目
类型:Stack
难度:困难

解题思路
https://leetcode-cn.com/problems/largest-rectangle-in-histogram/solution/zhu-zhuang-tu-zhong-zui-da-de-ju-xing-by-leetcode-/
看题解中的PPT有助于理解
代码
class Solution {public int largestRectangleArea(int[] heights) {int n = heights.length;int[] left = new int[n];int[] right = new int[n];Arrays.fill(right, n);Stack<Integer> mono_stack = new Stack<Integer>();for (int i = 0; i < n; ++i) {while (!mono_stack.isEmpty() && heights[mono_stack.peek()] >= heights[i]) {right[mono_stack.peek()] = i;mono_stack.pop();}left[i] = (mono_stack.isEmpty() ? -1 : mono_stack.peek());mono_stack.push(i);}int ans = 0;for (int i = 0; i < n; ++i) {ans = Math.max(ans, (right[i] - left[i] - 1) * heights[i]);}return ans;}}
