@@ -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
}
0 commit comments