Skip to content

Commit 1bee83c

Browse files
refactor 840
1 parent cceb094 commit 1bee83c

File tree

1 file changed

+34
-68
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+34
-68
lines changed

src/main/java/com/fishercoder/solutions/_840.java

+34-68
Original file line numberDiff line numberDiff line change
@@ -3,79 +3,45 @@
33
import java.util.HashSet;
44
import java.util.Set;
55

6-
/**
7-
* 840. Magic Squares In Grid
8-
*
9-
* A 3 x 3 magic square is a 3 x 3 grid filled with distinct numbers from 1 to 9 such that each row,
10-
* column, and both diagonals all have the same sum.
11-
*
12-
* Given an grid of integers, how many 3 x 3 "magic square" subgrids are there? (Each subgrid is contiguous).
13-
*
14-
* Example 1:
15-
*
16-
* Input: [[4,3,8,4],
17-
* [9,5,1,9],
18-
* [2,7,6,2]]
19-
*
20-
* Output: 1
21-
*
22-
* Explanation:
23-
* The following subgrid is a 3 x 3 magic square:
24-
* 438
25-
* 951
26-
* 276
27-
*
28-
* while this one is not:
29-
* 384
30-
* 519
31-
* 762
32-
*
33-
* In total, there is only one magic square inside the given grid.
34-
* Note:
35-
*
36-
* 1 <= grid.length <= 10
37-
* 1 <= grid[0].length <= 10
38-
* 0 <= grid[i][j] <= 15
39-
*/
406
public class _840 {
41-
public static class Solution1 {
42-
public int numMagicSquaresInside(int[][] grid) {
43-
int m = grid.length;
44-
int n = grid[0].length;
45-
int count = 0;
46-
for (int i = 0; i < m - 2; i++) {
47-
for (int j = 0; j < n - 2; j++) {
48-
Set<Integer> set = new HashSet<>();
49-
int sum = grid[i][j] + grid[i][j + 1] + grid[i][j + 2];
50-
if (sum == grid[i + 1][j] + grid[i + 1][j + 1] + grid[i + 1][j + 2]
51-
&& sum == grid[i + 2][j] + grid[i + 2][j + 1] + grid[i + 2][j + 2]
7+
public static class Solution1 {
8+
public int numMagicSquaresInside(int[][] grid) {
9+
int m = grid.length;
10+
int n = grid[0].length;
11+
int count = 0;
12+
for (int i = 0; i < m - 2; i++) {
13+
for (int j = 0; j < n - 2; j++) {
14+
Set<Integer> set = new HashSet<>();
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]
5218

53-
&& sum == grid[i][j] + grid[i + 1][j] + grid[i + 2][j]
54-
&& sum == grid[i][j + 1] + grid[i + 1][j + 1] + grid[i + 2][j + 1]
55-
&& sum == grid[i][j + 2] + grid[i + 1][j + 2] + grid[i + 2][j + 2]
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]
5622

57-
&& sum == grid[i][j] + grid[i + 1][j + 1] + grid[i + 2][j + 2]
58-
&& sum == grid[i][j + 2] + grid[i + 1][j + 1] + grid[i + 2][j]
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]
5925

60-
&& set.add(grid[i][j]) && isLegit(grid[i][j])
61-
&& set.add(grid[i][j + 1]) && isLegit(grid[i][j + 1])
62-
&& set.add(grid[i][j + 2]) && isLegit(grid[i][j + 2])
63-
&& set.add(grid[i + 1][j]) && isLegit(grid[i + 1][j])
64-
&& set.add(grid[i + 1][j + 1]) && isLegit(grid[i + 1][j + 1])
65-
&& set.add(grid[i + 1][j + 2]) && isLegit(grid[i + 1][j + 2])
66-
&& set.add(grid[i + 2][j]) && isLegit(grid[i + 2][j])
67-
&& set.add(grid[i + 2][j + 1]) && isLegit(grid[i + 2][j + 1])
68-
&& set.add(grid[i + 2][j + 2]) && isLegit(grid[i + 2][j + 2])
69-
) {
70-
count++;
71-
}
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+
) {
36+
count++;
37+
}
38+
}
39+
}
40+
return count;
7241
}
73-
}
74-
return count;
75-
}
7642

77-
private boolean isLegit(int num) {
78-
return num <= 9 && num >= 1;
43+
private boolean isLegit(int num) {
44+
return num <= 9 && num >= 1;
45+
}
7946
}
80-
}
8147
}

0 commit comments

Comments
 (0)