Largest Rectangle in Histogram

原创 2016年05月31日 12:46:02

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

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


/**
     * @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;
    // }


leetcode_question_85 Largest Rectangle in Histogram

Given n non-negative integers representing the histogram's bar height where the width of each bar is...
  • doc_sgl
  • doc_sgl
  • 2013年09月18日 14:00
  • 10013

Largest Rectangle in Histogram -- LeetCode

原题链接: http://oj.leetcode.com/problems/largest-rectangle-in-histogram/  这道题brute force的方法很直接,就是对于每一个窗...
  • linhuanmars
  • linhuanmars
  • 2014年03月05日 08:52
  • 15492

LeetCode Largest Rectangle in Histogram (单调栈)

Given n non-negative integers representing the histogram's bar height where the width of each bar is...
  • u011345136
  • u011345136
  • 2015年04月11日 21:37
  • 829

LeetCode 84 Largest Rectangle in Histogram (Python详解及实现)

【题目】 Given n non-negative integers representingthe histogram's bar height where the width of each b...
  • yangjingjing9
  • yangjingjing9
  • 2017年08月09日 15:34
  • 265

POJ 2559 Largest Rectangle in a Histogram 单调栈学习

【题意】             给定从左到右多个矩形,已知这此矩形的宽度都为1,长度不完全相等。这些矩形相连排成一排,求在这些矩形包括的范围内能得到的面积最大的矩形,打印出该面积。所求矩形可以横跨...
  • just_sort
  • just_sort
  • 2017年01月05日 13:18
  • 638

POJ-2559-Largest Rectangle in a Histogram-单调栈

朴素做法就是 枚举每一个i的高度  为矩形的宽,然后往两边搜索得到最长的矩形   把所有答案比较一遍得到最大的ans 当然,这样做会超时。一个可以优化的地方就是 n次枚举中,有很多次是可以省略掉的,用...
  • viphong
  • viphong
  • 2015年08月25日 22:37
  • 582

LeetCode84 Largest Rectangle in Histogram java题解

题目: Given n non-negative integers representing the histogram's bar height where the width of ea...
  • u012249528
  • u012249528
  • 2015年06月27日 11:21
  • 751

LeetCode --- 84. Largest Rectangle in Histogram

题目链接:Largest Rectangle in Histogram Given n non-negative integers representing the histogram's bar ...
  • makuiyu
  • makuiyu
  • 2015年04月03日 17:07
  • 2305

LeetCode84——Largest Rectangle in Histogram

在柱状图中找到面积最大的矩形。
  • zhangxiao93
  • zhangxiao93
  • 2016年01月27日 22:34
  • 927

HDU 1506(Largest Rectangle in a Histogram)动态规划

题目要求最大矩阵,这类题目好多 n有点大,n*n的算法估计不现实,高度值也好大,n*h肯定超32位了,用int64位来做 利用向两边扫描的求出高度不低于当前位置的矩阵位置,因为宽度都为1,那么当前...
  • B08370108
  • B08370108
  • 2015年08月10日 15:24
  • 453
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Largest Rectangle in Histogram
举报原因:
原因补充:

(最多只允许输入30个字)