最大正方形
(统计全为 1 的正方形子矩阵) 解析可以参考leetcode解析
public class Solution
{
public int countSquares(int[][] matrix)
{
final int height = matrix.length;
if (height == 0)
{
return 0;
}
final int width = matrix[0].length;
final int[][] dp = new int[height][width];
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
if (i == 0 || j == 0)
{
dp[i][j] = matrix[i][j];
} else if (matrix[i][j] == 0)
{
dp[i][j] = 0;
} else
{
dp[i][j] = Math.min(dp[i - 1][j - 1], Math.min(dp[i][j - 1], dp[i - 1][j])) + 1;
}
}
}
int result = 0;
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
result += dp[i][j];
}
}
return result;
}
}