10
10
var maximalSquare = function ( matrix ) {
11
11
let max = 0 ;
12
12
let deepKeeper = new Array ( matrix . length ) . fill ( ) . map ( ( ) => new Array ( matrix [ 0 ] . length ) . fill ( - 1 ) ) ;
13
- // matrix.forEach((v) => v.push("0")); // right zero padding
14
- // matrix.push(new Array(matrix[0].length).fill("0")); // bottom zero padding
15
13
16
14
for ( let i = 0 ; i < matrix . length ; i ++ ) {
17
15
for ( let j = 0 ; j < matrix [ i ] . length ; j ++ ) {
18
16
if ( matrix [ i ] [ j ] == "1" ) {
19
17
let currentLen = getDeep ( matrix , i , j , deepKeeper ) + 1 ;
20
- max = Math . max ( max , currentLen ) ;
18
+ max = Math . max ( max , currentLen ) ;
19
+ }
20
+ else {
21
+ deepKeeper [ i ] [ j ] = 0 ;
21
22
}
22
23
}
23
24
}
24
25
25
- return max ;
26
+ return max * max ;
26
27
} ;
27
28
28
29
function getDeep ( matrix , i , j , deepKeeper ) {
@@ -37,7 +38,7 @@ function getDeep(matrix, i, j, deepKeeper) {
37
38
for ( let i = 0 ; i < neighbors . length ; i ++ ) {
38
39
min = Math . min ( min , getDeep ( matrix , neighbors [ i ] [ 0 ] , neighbors [ i ] [ 1 ] , deepKeeper ) ) ;
39
40
}
40
- deepKeeper [ i , j ] = min + 1 ;
41
+ deepKeeper [ i ] [ j ] = min + 1 ;
41
42
}
42
43
43
44
return deepKeeper [ i ] [ j ] ;
@@ -52,7 +53,7 @@ function hasNeighbors(matrix, i, j) {
52
53
53
54
if ( matrix . length > i + 1 && matrix [ i ] . length > j + 1 ) {
54
55
for ( let i = 0 ; i < neighbors . length ; i ++ ) {
55
- if ( matrix [ neighbors [ i ] [ 0 ] , neighbors [ i ] [ 1 ] ] != "1" ) {
56
+ if ( matrix [ neighbors [ i ] [ 0 ] ] [ neighbors [ i ] [ 1 ] ] != "1" ) {
56
57
return null ;
57
58
}
58
59
}
0 commit comments