zoukankan      html  css  js  c++  java
  • [leetcode] Largest Rectangle in Histogram

    题目:(Stack)

    Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.

    Above is a histogram where width of each bar is 1, given height = [2,1,5,6,2,3].

    The largest rectangle is shown in the shaded area, which has area = 10 unit.

    For example,
    Given height = [2,1,5,6,2,3],
    return 10.

    题解:

    参考http://www.cnblogs.com/lichen782/p/leetcode_Largest_Rectangle_in_Histogram.html

    难题,思路比较难想。多看看。

    public class Solution {
        public int largestRectangleArea(int[] height) {
            Stack<Integer> stack = new Stack<Integer>();
            int [] h = new int[height.length+1];
            int i=0;
            int result=0;
            h = Arrays.copyOf(height, height.length+1);
            while(i<h.length)
            {
                if(stack.isEmpty()||h[i]>h[stack.peek()])
                   stack.push(i++);
                else
                {
                    int t = stack.pop();
                    result = Math.max(result, h[t]*(stack.isEmpty()? i : i-stack.peek()-1));
                }
            }
            return result;
        }
    }
  • 相关阅读:
    SSM整合redis
    正则表达式验证
    175. 组合两个表
    SQL高级教程2
    SQL高级教程1
    数据可视化
    SQL基础
    SQL函数
    数据分析
    python数据分析-连接mysql
  • 原文地址:https://www.cnblogs.com/fengmangZoo/p/4196976.html
Copyright © 2011-2022 走看看