class Solution{
public:
int maximalSquare(vector< vector<char> > matrix){
if(0 == matrix.size())
return 0;
int row = matrix.size(), col = matrix[0].size();
vector<vector<int>> dp(row, vector<int>(col, 0));
int maxn = 0;
for(int i = 0; i < row; ++i){
dp[i][0] = matrix[i][0] - '0';
maxn = max(maxn, dp[i][0]);
}
for(int i = 0; i < col; ++i){
dp[0][i] = matrix[0][i] - '0';
maxn = max(maxn, dp[0][i]);
}
for(int i = 1; i < row; ++i){
for(int j = 1; j < col; ++j){
if(matrix[i][j] == '1'){
dp[i][j] = min(min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1]) + 1;
}
maxn = max(maxn, dp[i][j]);
}
}
return maxn * maxn;
}
};
221. Maximal Square
最新推荐文章于 2021-04-29 20:57:26 发布