Leetcode05-30

我们可以遍历每根柱子,以当前柱子 i 的高度作为矩形的高,那么矩形的宽度边界即为向左找到第一个高度小于当前柱体 i 的柱体,向右找到第一个高度小于当前柱体 i 的柱体。

对于每个柱子我们都如上计算一遍以当前柱子作为高的矩形面积,最终比较出最大的矩形面积即可。

class Solution {

    public int largestRectangleArea(int[] heights) {

        int area = 0, n = heights.length;

        // 遍历每个柱子,以当前柱子的高度作为矩形的高 h,

        // 从当前柱子向左右遍历,找到矩形的宽度 w。

        for (int i = 0; i < n; i++) {

            int w = 1, h = heights[i], j = i;

            while (--j >= 0 && heights[j] >= h) {

                w++;

            }

            j = i;

            while (++j < n && heights[j] >= h) {

                w++;

            }

            area = Math.max(area, w * h);

        }

        return area;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。