largest rectangle in histogram 解法


  网上找到的算法思路,java代码如下:  不得不佩服的思维和简洁的code

public class Solution {
    public int largestRectangleArea(int[] height) {
        int len = height.length;
        if(len < 1) return 0;
        Stack<Integer> st = new Stack<Integer>(); //Index ..
        int rlt = 0; 
        for(int i = 0; i < len ; i ++){
            if(st.empty() || height[i] > height[st.peek()])
                st.add(i);
            else{
                rlt = Math.max(rlt,height[st.pop()] * (st.empty() ? i : ( i - st.peek() - 1)));
                i --;
            }
        }
                while(!st.empty())
                rlt = Math.max(rlt,height[st.pop()] * (st.empty() ? len : ( len - st.peek() - 1)));
        
        return rlt;
    }
}



你可能感兴趣的:(largest rectangle in histogram 解法)