您的位置:首页 > 其它

221. Maximal Square

2016-04-08 03:55 375 查看
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area.

For example, given the following matrix:
1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0

Return 4.

DP solution

public int maximalSquare(char[][] matrix) {
if (matrix.length == 0)
return 0;
int m = matrix.length, n = matrix[0].length, result = 0;
int[][] b = new int[m + 1][n + 1];
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (matrix[i - 1][j - 1] == '1') {
b[i][j] = Math.min(Math.min(b[i][j - 1], b[i - 1][j - 1]), b[i - 1][j]) + 1;
result = Math.max(b[i][j], result); // update result
}
}
}
return result * result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: