LeetCode 221. 最大正方形
动态规划 \(O(n)\)

C++ 代码
class Solution {
public:
int maximalSquare(vector<vector<char>>& matrix) {
int n = matrix.size();
int m = 0;
if (n) m = matrix[0].size();
else return 0;
int f[n + 1][m + 1];
memset(f, 0, sizeof f);
int res = 0;
for (int i = 1; i <= n; i ++)
{
for (int j = 1; j <= m; j ++)
{
if (matrix[i - 1][j - 1] == '1')
{
f[i][j] = min(f[i - 1][j], min(f[i][j - 1], f[i - 1][j - 1])) + 1;
res = max(res, f[i][j]);
}
}
}
// 返回面积
return res * res;
}
};

浙公网安备 33010602011771号