zoukankan      html  css  js  c++  java
  • Maximal Rectangle

    Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1's and return its area.

    For example, given the following matrix:

    1 0 1 0 0
    1 0 1 1 1
    1 1 1 1 1
    1 0 0 1 0
    

    Return 6.

    class Solution {
    private:
        int largestRectangle(vector<int>& heights){
            stack<int> s;
            heights.push_back(0);
            int res = 0;
            int i = 0;
            while(i < heights.size()){
                if(s.empty() || heights[i] > heights[s.top()]){
                    s.push(i);
                    i++;
                }else{
                    int cur = s.top();
                    s.pop();
                    if(s.empty()){
                        res = max(res,i*heights[cur]);
                    }else{
                        res = max(res,heights[cur]*(i-s.top()-1));
                    }
                }
            }
            return res;
        }
    public:
        int maximalRectangle(vector<vector<char>>& matrix) {
            if(matrix.empty()) return 0;
            int m = matrix.size();
            int n = matrix[0].size();
            int res = 0;
            vector<int> heights(n,0);
            for(int i=0;i<m;i++){
                for(int j=0;j<n;j++){
                    heights[j] = matrix[i][j] == '0'? 0 : (1+heights[j]);
                }
                res = max(res,largestRectangle(heights));
            }
           return res;
        }
       
    };
  • 相关阅读:
    滚动条去掉
    js 类继承extends
    html标签分类
    Freemarker模板引擎
    关于SpringMVC控制器的一点补充
    Maven的使用
    多层嵌套的json数据
    前后端数据交互之数据接口
    ES6浅谈之Promise
    ES6(阮一峰)学习总结
  • 原文地址:https://www.cnblogs.com/wxquare/p/6213310.html
Copyright © 2011-2022 走看看