题目描述
解法:DP(C++)
详细参考 官方题解 对 dp 的描述
class Solution {
public:
int maximalSquare(vector<vector<char>>& matrix) {
if(matrix.size()==0 || matrix[0].size()==0) return 0;
int n = matrix.size(), m = matrix[0].size(), maxside = 0;
vector<vector<int>> dp(n, vector<int>(m, 0));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(matrix[i][j]=='1')
{
if(i==0 || j==0) dp[i][j] = 1;
else dp[i][j] = min(min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1])+1;
maxside = max(maxside, dp[i][j]);
}
}
}
return maxside*maxside;
}
};