zoukankan      html  css  js  c++  java
  • Maximal Rectangle

    很不好想的一道题,参考:http://blog.csdn.net/doc_sgl/article/details/11832965

    分为两步:把原矩阵转为直方图,再用largest rectangle求解:http://www.cnblogs.com/573177885qq/p/5537334.html

    int largestRectangleArea(vector<int>& heights) {
            stack<int> s;
            heights.push_back(0);
            int result=0;
            for(int i=0;i<heights.size();)
            {
                if(s.empty()||heights[i]>heights[s.top()])
                {
                    s.push(i++);
                }
                else
                {
                    int tmp=s.top();
                    s.pop();
                    result=max(result,heights[tmp]*(s.empty()?i:i-s.top()-1));
                }
            }
            return result;
        }
        int maximalRectangle(vector<vector<char>>& matrix) {
            int m=matrix.size();
            int n=matrix[0].size();
            if(m==0 || n==0)return 0;
            vector<vector<int>>dp(m,vector<int>(n,0));
           
            for(int j=0;j<n;j++)
               if(matrix[0][j]=='1')dp[0][j]=1;
            for(int j=0;j<n;j++)
            {
            for(int i=1;i<m;i++)
            {
                if(matrix[i][j]=='1')dp[i][j]=dp[i-1][j]+1;
            }
            }
            int max_area=0;
            for(int i=0;i<m;i++)
                max_area=max(max_area,largestRectangleArea(dp[i]));
                
            return max_area;
        }
  • 相关阅读:
    2019年8月22日 星期四(杂谈)
    文件读写
    log4j
    java 读写 xlsx
    mongodb的增删改查
    mongodb安装与简单配置
    mondb的特性
    mongodb 的简单应用
    linux 学习1
    linux 安装MySql
  • 原文地址:https://www.cnblogs.com/573177885qq/p/6230767.html
Copyright © 2011-2022 走看看