Maximal Rectangle

来源:互联网 发布:node.js php 对比 编辑:程序博客网 时间:2024/06/09 08:24

 1.原始矩阵

   

2.对矩阵进行如下处理

 

3.对于每一个点matrix[i][j],计算ans=max(ans,min(matrix[i~k][j])*(i-k))

 

 

class Solution {public:    int maximalRectangle(vector<vector<char> > &matrix) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if(matrix.size()==0)return 0;        int r=matrix.size(),c=matrix[0].size(),i,j,k,ret=0;                vector<int> row(c,0);        vector<vector<int>> mtx(r,row);        for(i=0;i<r;++i)            mtx[i][0]=(matrix[i][0]=='1');        for(i=0;i<r;++i){            for(j=1;j<c;++j){                if(matrix[i][j]=='1')                    mtx[i][j]=mtx[i][j-1]+1;                else                     mtx[i][j]=0;            }        }        for(i=0;i<r;++i){            for(j=0;j<c;++j){                                if(mtx[i][j]!=0){                    int w=mtx[i][j],h=0;                    for(k=i;k>=0;--k){                        w=min(mtx[k][j],w);                        ++h;                        ret=max(ret,w*h);                        if(w==0)break;                    }                                    }            }        }        return ret;       }};


 

原创粉丝点击