LeetCode 221.最大正方形
ways:
- 构建一个二维res(m+1,n+1)数组,数组多构建1行1列,res[i+1] [j+1]代表在matrix中以matrix[i] [j]为右下角的最大正方形的边长
完整代码:
class Solution {
public:
int maximalSquare(vector<vector<char>>& matrix) {
int m = matrix.size(),n = matrix[0].size();
int l = 0;
vector<vector<int>> res(m+1,vector<int> (n+1,0)); // 多补1行1列,就不用在if语句内添加判断边界的条件了;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
if(matrix[i][j] == '0')
res[i+1][j+1] = 0;
else
{
res[i+1][j+1] = min(res[i][j],min(res[i][j+1],res[i+1][j])) + 1;
l = max(res[i+1][j+1],l);
}
}
}
return l*l;
}
};