File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed
solution/0800-0899/0840.Magic Squares In Grid Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[][] } grid
3
+ * @return {number }
4
+ */
5
+ var numMagicSquaresInside = function ( grid ) {
6
+ const isMagic = ( i , j ) => {
7
+ const s = new Set ( ) ;
8
+ for ( let x = 0 ; x < 3 ; x ++ ) {
9
+ for ( let y = 0 ; y < 3 ; y ++ ) {
10
+ const num = grid [ i + x ] [ j + y ] ;
11
+ if ( num < 1 || num > 9 || s . has ( num ) ) return false ;
12
+ s . add ( num ) ;
13
+ }
14
+ }
15
+
16
+ const rowSum = grid [ i ] [ j ] + grid [ i ] [ j + 1 ] + grid [ i ] [ j + 2 ] ;
17
+ if ( rowSum !== grid [ i + 1 ] [ j ] + grid [ i + 1 ] [ j + 1 ] + grid [ i + 1 ] [ j + 2 ] ) return false ;
18
+ if ( rowSum !== grid [ i + 2 ] [ j ] + grid [ i + 2 ] [ j + 1 ] + grid [ i + 2 ] [ j + 2 ] ) return false ;
19
+
20
+ const colSum1 = grid [ i ] [ j ] + grid [ i + 1 ] [ j ] + grid [ i + 2 ] [ j ] ;
21
+ const colSum2 = grid [ i ] [ j + 1 ] + grid [ i + 1 ] [ j + 1 ] + grid [ i + 2 ] [ j + 1 ] ;
22
+ const colSum3 = grid [ i ] [ j + 2 ] + grid [ i + 1 ] [ j + 2 ] + grid [ i + 2 ] [ j + 2 ] ;
23
+ if ( rowSum !== colSum1 || rowSum !== colSum2 || rowSum !== colSum3 ) return false ;
24
+
25
+ if ( rowSum !== grid [ i ] [ j ] + grid [ i + 1 ] [ j + 1 ] + grid [ i + 2 ] [ j + 2 ] ) return false ;
26
+ if ( rowSum !== grid [ i ] [ j + 2 ] + grid [ i + 1 ] [ j + 1 ] + grid [ i + 2 ] [ j ] ) return false ;
27
+
28
+ return true ;
29
+ } ;
30
+
31
+ let count = 0 ;
32
+
33
+ for ( let i = 0 ; i < grid . length - 2 ; i ++ ) {
34
+ for ( let j = 0 ; j < grid [ 0 ] . length - 2 ; j ++ ) {
35
+ if ( isMagic ( i , j ) ) count ++ ;
36
+ }
37
+ }
38
+
39
+ return count ;
40
+ } ;
You can’t perform that action at this time.
0 commit comments