题目
在一个由 '0'
和 '1'
组成的二维矩阵内,找到只包含 '1'
的最大正方形,并返回其面积。
知识点
动态规划,创建二维数组的方式
C++定义vector二维数组 vector<vector<int>> dp(row, vector<int>(column));
C++ 动态规划
class Solution {
public:
int maximalSquare(vector<vector<char>>& matrix) {
int row=matrix.size();
int column=matrix[0].size();
if(row==0||column==0) return 0;
int maxSide=0;
vector<vector<int>> dp(row, vector<int>(column));
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; 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 - 1], dp[i - 1][j]), dp[i][j - 1]) + 1;
}
}
maxSide = max(dp[i][j], maxSide);
}
}
return maxSide * maxSide;
}
};