File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[][] } grid
3
+ * @return {number }
4
+ */
5
+ var largest1BorderedSquare = function ( grid ) {
6
+ let result = 0 ;
7
+ const dp = [ ] ;
8
+ for ( let i = 0 ; i < grid . length ; i ++ ) {
9
+ dp [ i ] = [ ] ;
10
+ for ( let j = 0 ; j < grid [ i ] . length ; j ++ ) {
11
+ dp [ i ] [ j ] = [ ] ;
12
+ if ( grid [ i ] [ j ] === 0 ) {
13
+ dp [ i ] [ j ] [ 0 ] = 0 ;
14
+ dp [ i ] [ j ] [ 1 ] = 0 ;
15
+ } else if ( i === 0 ) {
16
+ dp [ i ] [ j ] [ 0 ] = 1 + ( j > 0 ? dp [ i ] [ j - 1 ] [ 0 ] : 0 ) ;
17
+ dp [ i ] [ j ] [ 1 ] = 1 ;
18
+ } else if ( j === 0 ) {
19
+ dp [ i ] [ j ] [ 0 ] = 1 ;
20
+ dp [ i ] [ j ] [ 1 ] = 1 + ( i > 0 ? dp [ i - 1 ] [ j ] [ 1 ] : 0 ) ;
21
+ } else {
22
+ dp [ i ] [ j ] [ 0 ] = 1 + dp [ i ] [ j - 1 ] [ 0 ] ;
23
+ dp [ i ] [ j ] [ 1 ] = 1 + dp [ i - 1 ] [ j ] [ 1 ] ;
24
+ }
25
+
26
+ let len = Math . min ( ...dp [ i ] [ j ] ) ;
27
+ while ( len ) {
28
+ if ( dp [ i - len + 1 ] [ j ] [ 0 ] >= len && dp [ i ] [ j - len + 1 ] [ 1 ] >= len ) {
29
+ break ;
30
+ }
31
+ len -- ;
32
+ }
33
+ result = Math . max ( result , len ) ;
34
+ }
35
+ }
36
+ return result * result ;
37
+ } ;
You can’t perform that action at this time.
0 commit comments