题目
在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。
示例 1:
输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]
输出:4
示例 2:
输入:matrix = [[“0”,“1”],[“1”,“0”]]
输出:1
示例 3:
输入:matrix = [[“0”]]
输出:0
代码
public class Solution
{
public int MaximalSquare(char[][] matrix)
{
int[,] dp = new int[matrix.Length + 1, matrix[0].Length + 1];
int maxn = 0;
for (int i = 1; i < dp.GetLength(0); i++)
for (int j = 1; j < dp.GetLength(1); j++)
{
if (matrix[i - 1][j - 1] == '1')
dp[i, j] = Math.Min(
Math.Min(dp[i - 1, j - 1], dp[i, j - 1]), dp[i - 1, j]) + 1;
maxn = Math.Max(maxn, dp[i, j]);
}
return maxn * maxn;
}
}