参考 : http://www.cnblogs.com/lichen782/p/leetcode_Largest_Rectangle_in_Histogram.html
public int largestRectangleArea(int[] height) { int i = 0; int maxArea = 0; int[] h = new int[height.length + 1]; h = Arrays.copyOf(height, height.length + 1); Stack<Integer> stack = new Stack<Integer>(); while (i < h.length) { if (stack.isEmpty() || h[stack.peek()] <= h[i]) { stack.push(i++); } else { int t = stack.pop(); maxArea = Math.max(maxArea, h[t]*(stack.isEmpty() ? i : i - stack.peek() - 1)); } } return maxArea; }
时间: 2024-10-26 03:05:56