@@ -13,33 +13,36 @@ public int numMagicSquaresInside(int[][] grid) {
13
13
for (int j =0 ;j <n -2 ;j ++) {
14
14
Set <Integer >set =new HashSet <>();
15
15
int sum =grid [i ][j ] +grid [i ][j +1 ] +grid [i ][j +2 ];
16
- if (sum ==grid [i +1 ][j ] +grid [i +1 ][j +1 ] +grid [i +1 ][j +2 ]
17
- &&sum ==grid [i +2 ][j ] +grid [i +2 ][j +1 ] +grid [i +2 ][j +2 ]
18
-
19
- &&sum ==grid [i ][j ] +grid [i +1 ][j ] +grid [i +2 ][j ]
20
- &&sum ==grid [i ][j +1 ] +grid [i +1 ][j +1 ] +grid [i +2 ][j +1 ]
21
- &&sum ==grid [i ][j +2 ] +grid [i +1 ][j +2 ] +grid [i +2 ][j +2 ]
22
-
23
- &&sum ==grid [i ][j ] +grid [i +1 ][j +1 ] +grid [i +2 ][j +2 ]
24
- &&sum ==grid [i ][j +2 ] +grid [i +1 ][j +1 ] +grid [i +2 ][j ]
25
-
26
- &&set .add (grid [i ][j ]) &&isLegit (grid [i ][j ])
27
- &&set .add (grid [i ][j +1 ]) &&isLegit (grid [i ][j +1 ])
28
- &&set .add (grid [i ][j +2 ]) &&isLegit (grid [i ][j +2 ])
29
- &&set .add (grid [i +1 ][j ]) &&isLegit (grid [i +1 ][j ])
30
- &&set .add (grid [i +1 ][j +1 ]) &&isLegit (grid [i +1 ][j +1 ])
31
- &&set .add (grid [i +1 ][j +2 ]) &&isLegit (grid [i +1 ][j +2 ])
32
- &&set .add (grid [i +2 ][j ]) &&isLegit (grid [i +2 ][j ])
33
- &&set .add (grid [i +2 ][j +1 ]) &&isLegit (grid [i +2 ][j +1 ])
34
- &&set .add (grid [i +2 ][j +2 ]) &&isLegit (grid [i +2 ][j +2 ])
35
- ) {
16
+ if (isValid (grid ,i ,j ,set ,sum )) {
36
17
count ++;
37
18
}
38
19
}
39
20
}
40
21
return count ;
41
22
}
42
23
24
+ private boolean isValid (int [][]grid ,int i ,int j ,Set <Integer >set ,int sum ) {
25
+ return sum ==grid [i +1 ][j ] +grid [i +1 ][j +1 ] +grid [i +1 ][j +2 ]
26
+ &&sum ==grid [i +2 ][j ] +grid [i +2 ][j +1 ] +grid [i +2 ][j +2 ]
27
+
28
+ &&sum ==grid [i ][j ] +grid [i +1 ][j ] +grid [i +2 ][j ]
29
+ &&sum ==grid [i ][j +1 ] +grid [i +1 ][j +1 ] +grid [i +2 ][j +1 ]
30
+ &&sum ==grid [i ][j +2 ] +grid [i +1 ][j +2 ] +grid [i +2 ][j +2 ]
31
+
32
+ &&sum ==grid [i ][j ] +grid [i +1 ][j +1 ] +grid [i +2 ][j +2 ]
33
+ &&sum ==grid [i ][j +2 ] +grid [i +1 ][j +1 ] +grid [i +2 ][j ]
34
+
35
+ &&set .add (grid [i ][j ]) &&isLegit (grid [i ][j ])
36
+ &&set .add (grid [i ][j +1 ]) &&isLegit (grid [i ][j +1 ])
37
+ &&set .add (grid [i ][j +2 ]) &&isLegit (grid [i ][j +2 ])
38
+ &&set .add (grid [i +1 ][j ]) &&isLegit (grid [i +1 ][j ])
39
+ &&set .add (grid [i +1 ][j +1 ]) &&isLegit (grid [i +1 ][j +1 ])
40
+ &&set .add (grid [i +1 ][j +2 ]) &&isLegit (grid [i +1 ][j +2 ])
41
+ &&set .add (grid [i +2 ][j ]) &&isLegit (grid [i +2 ][j ])
42
+ &&set .add (grid [i +2 ][j +1 ]) &&isLegit (grid [i +2 ][j +1 ])
43
+ &&set .add (grid [i +2 ][j +2 ]) &&isLegit (grid [i +2 ][j +2 ]);
44
+ }
45
+
43
46
private boolean isLegit (int num ) {
44
47
return num <=9 &&num >=1 ;
45
48
}