《LeetCode力扣练习》代码随想录——单调栈(柱状图中最大的矩形—Java)
刷题思路来源于 代码随想录
84. 柱状图中最大的矩形
-
单调栈
class Solution { public int largestRectangleArea(int[] heights) { int result = 0; Deque<Integer> stack = new ArrayDeque<>(); int[] nums = new int[heights.length + 2]; nums[0] = 0; nums[heights.length + 1] = 0; for (int i = 1; i < heights.length + 1; i++) { nums[i] = heights[i - 1]; } stack.push(0); for (int i = 1; i < heights.length + 2; i++) { if (nums[i] > nums[stack.peek()]) { stack.push(i); } else if (nums[i] == nums[stack.peek()]) { stack.pop(); stack.push(i); } else { while (!stack.isEmpty() && nums[i] < nums[stack.peek()]) { int middle = nums[stack.pop()]; if (!stack.isEmpty()) { int left = stack.peek(); int temp = middle * (i - left - 1); result = Math.max(result, temp); } } stack.push(i); } } return result; } }