221. Maximal Square
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing only 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 0Return 4.
public class Solution {
public int maximalSquare(char[][] matrix) {
if (matrix.length==0 || matrix[0].length==0) return 0;
int max=0, row=matrix.length, col=matrix[0].length;
int[][] dp= new int[row+1][col+1];
for (int i=0; i<row; i++){
for (int j = 0; j < col; j++) {
if (matrix[i][j]=='1') {
dp[i + 1][j + 1] = Math.min(dp[i][j], Math.min(dp[i][j + 1], dp[i + 1][j])) + 1;
max= Math.max(max, dp[i+1][j+1]);
}
}
}
return max*max;
}
}