public int largestRectangleArea(int[] height) {
		if (height == null || height.length == 0)
			return 0;
		int area = 0;
		Stack<Integer> stack = new Stack<Integer>();
		for (int i = 0; i <= height.length; i++) {
			int h = i < height.length ? height[i] : 0;
			if (stack.empty() || height[stack.peek()] < h) {
				stack.push(i);
			} else {
				int start = stack.pop();
				int width = stack.empty() ? i : i - stack.peek() - 1;
				area = Math.max(area, height[start] * width);
				i--;
			}
		}
		return area;
	}