Maximal Square LeetCode solution in Java

1
class Solution {
2
public int maximalSquare(char[][] matrix) {
3
int m = matrix.length;
4
int n = matrix[0].length;
5
int[][] dp = new int[m][n];
6

7
int max = 0;
8

9
for (int i = 0; i < m; i++) {
10
dp[i][0] = matrix[i][0] - 48;
11
if (matrix[i][0] == '1') max = 1;
12
}
13
for (int i = 0; i < n; i++) {
14
dp[0][i] = matrix[0][i] - 48;
15
if (matrix[0][i] == '1') max = 1;
16
}
17

18
for (int i = 1; i < m; i++) {
19
for (int j = 1; j < n; j++) {
20
if (matrix[i][j] == '1') {
21
dp[i][j] = Math.min(dp[i - 1][j - 1], Math.min(dp[i][j - 1], dp[i - 1][j])) + 1;
22
if (dp[i][j] > max) {
23
max = dp[i][j];
24
}
25
}
26
}
27
}
28

29
return max * max;
30
}
31
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0