关闭

Largest Rectangle in Histogram

107人阅读 评论(0) 收藏 举报
分类:

这是一道智力题,我还会再次好好做这个的

一个很好的参考:点击打开链接


/**
     * @param height: A list of integer
     * @return: The area of largest rectangle in the histogram
     */
     
    public int largestRectangleArea(int[] height) {
        int max = 0;
        if (height == null || height.length < 1) {
            return max;
        }
        Stack<Integer> stack = new Stack<>();
        int i = 0;
        int[] newHeight = new int[height.length + 1];
        for (int j = 0; j< height.length; j++) {
            newHeight[j] = height[j];
        }
        newHeight[height.length] = 0;
        while (i < newHeight.length) {
            // if (i == height.length) {
            //     int t = stack.pop();
            //     max = Math.max(max, height[t] * (stack.isEmpty() ? i : i - stack.peek() - 1));
            //     break;
            // }
            
            if (stack.isEmpty() || newHeight[stack.peek()] < newHeight[i]) {
                stack.push(i);
                i++;
            } else {
                int t = stack.pop();
                max = Math.max(max, newHeight[t] * (stack.isEmpty() ? i : i - stack.peek() - 1));
            }
        }
        
        
        return max;
    }
     
    // public int largestRectangleArea(int[] height) {
    //     int max = 0;
    //     //2 if (height == null || height.length < 2) {
    //     if (height == null || height.length < 1) {
    //         return max;
    //     }
    //     for (int i = 0; i < height.length; i++) {
    //         int h = height[i];
    //         for (int j = i; j < height.length; j++) {
    //             //1 if (height[i] > height[j]) {
    //             if (h > height[j]) {
    //                 h = height[j];
    //             }
    //             int width = j - i + 1;
    //             max = Math.max(max, width*h);
    //         }
    //     }
    //     return max;
    // }


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:72548次
    • 积分:8181
    • 等级:
    • 排名:第2549名
    • 原创:795篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类