Given a 2D binary matrix filled with 0‘s and 1‘s, find the largest rectangle containing all ones and return its area.
给定一个由0和1填充的二维矩阵,找一个全是1的最大矩形
class Solution {
public:
int maximalRectangle(vector<vector<char> > &matrix) {
int rows = matrix.size();
if(rows==0)return 0;
int cols = matrix[0].size();
if(cols==0)return 0;
int maxArea=0;
for(int i=0; i<rows; i++){
for(int j=0; j<cols; j++){
if(matrix[i][j]=='1'){
//求以该位置为左上角的最大矩形
int minHeight=INT_MAX;
int width=0;
int ti=i;
while(ti<rows && matrix[ti][j]=='1'){
width++;
int height=0; //求横向高度
while(j+height<cols && matrix[ti][j+height]=='1')height++;
//更新最小高度
if(height<minHeight)minHeight=height;
//计算当前面积
int curArea = width*minHeight;
//更新最大面积
if(curArea>maxArea)maxArea=curArea;
ti++;
}
}
}
}
return maxArea;
}
};LeetCode: Maximal Rectangle [085],布布扣,bubuko.com
LeetCode: Maximal Rectangle [085]
原文地址:http://blog.csdn.net/harryhuang1990/article/details/27709721