【题目描述】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组成的最大矩阵的面积。
【解题思路】计算每一列中的1字组成的竖线能向左扩展多长
【考查内容】贪心
class Solution {
public:
int maximalRectangle(vector<vector<char> > &matrix) {
int m = matrix.size();
if(m == 0)
return 0;
int n = matrix[0].size();
if(n == 0)
return 0;
vector<int> vec(m,0);
vector<vector<int>> area(m,vec);
int maxArea = 0;
for(int i = 0;i<m;i++){
for(int j = i;j< m;j++){
if(matrix[j][0] == '0')
break;
area[i][j] = j-i+1;
if(area[i][j] > maxArea)
maxArea = area[i][j];
}
}
for(int k = 1;k<n;k++){
for(int i = 0;i<m;i++){
int flag = 0;
for(int j = i;j< m;j++){
if(flag == 1){
area[i][j] = 0;
}else if(matrix[j][k] == '0') {
flag = 1;
area[i][j] = 0;
}else{
area[i][j] += j-i+1;
if(area[i][j] > maxArea)
maxArea = area[i][j];
}
}
}
}
return maxArea;
}
};