File tree Expand file tree Collapse file tree 1 file changed +20
-18
lines changed Expand file tree Collapse file tree 1 file changed +20
-18
lines changed Original file line number Diff line number Diff line change 33 * @return {number }
44 */
55const largest1BorderedSquare = function ( grid ) {
6- let A = grid
6+ let A = grid ;
77 let m = A . length ,
8- n = A [ 0 ] . length
9- const left = Array . from ( Array ( m ) ) . map ( ( ) => Array ( n ) . fill ( 0 ) )
10- const top = Array . from ( Array ( m ) ) . map ( ( ) => Array ( n ) . fill ( 0 ) )
8+ n = A [ 0 ] . length ;
9+ let max = 0 ;
10+ const hori = Array . from ( Array ( m ) ) . map ( ( ) => Array ( n ) . fill ( 0 ) ) ;
11+ const ver = Array . from ( Array ( m ) ) . map ( ( ) => Array ( n ) . fill ( 0 ) ) ;
1112 for ( let i = 0 ; i < m ; ++ i ) {
1213 for ( let j = 0 ; j < n ; ++ j ) {
1314 if ( A [ i ] [ j ] > 0 ) {
14- left [ i ] [ j ] = j > 0 ? left [ i ] [ j - 1 ] + 1 : 1
15- top [ i ] [ j ] = i > 0 ? top [ i - 1 ] [ j ] + 1 : 1
15+ hori [ i ] [ j ] = j > 0 ? hori [ i ] [ j - 1 ] + 1 : 1 ;
16+ ver [ i ] [ j ] = i > 0 ? ver [ i - 1 ] [ j ] + 1 : 1 ;
1617 }
1718 }
1819 }
19- for ( let l = Math . min ( m , n ) ; l > 0 ; -- l )
20- for ( let i = 0 ; i < m - l + 1 ; ++ i )
21- for ( let j = 0 ; j < n - l + 1 ; ++ j )
22- if (
23- top [ i + l - 1 ] [ j ] >= l &&
24- top [ i + l - 1 ] [ j + l - 1 ] >= l &&
25- left [ i ] [ j + l - 1 ] >= l &&
26- left [ i + l - 1 ] [ j + l - 1 ] >= l
27- )
28- return l * l
29- return 0
30- }
20+ for ( let i = m - 1 ; i >= 0 ; i -- ) {
21+ for ( let j = n - 1 ; j >= 0 ; j -- ) {
22+ let small = Math . min ( hori [ i ] [ j ] , ver [ i ] [ j ] ) ;
23+ while ( small > max ) {
24+ if ( ver [ i ] [ j - small + 1 ] >= small && hori [ i - small + 1 ] [ j ] >= small )
25+ max = small ;
26+ small -- ;
27+ }
28+ }
29+ }
30+ return max * max ;
31+ } ;
32+
You can’t perform that action at this time.
0 commit comments