Magic Squares In Grid LeetCode solution in Java

1
class Solution {
2
public int numMagicSquaresInside(int[][] grid) {
3
int n = grid.length, m = grid[0].length, count = 0;
4
for (int i = 0; i < n - 2; i++) {
5
for (int j = 0; j < m - 2; j++) {
6
if (sum(i, j, grid)) count++;
7
}
8
}
9

10
return count;
11
}
12

13
public boolean sum(int x, int y, int[][] grid) {
14
int sum = grid[x][y] + grid[x][y + 1] + grid[x][y + 2], sum1 = 0, sum2 = 0;
15
int[] count = new int[10];
16
for (int i = 0; i < 3; i++) {
17
sum1 = 0;
18
sum2 = 0;
19
for (int j = 0; j < 3; j++) {
20
sum1 += grid[x + i][y + j];
21
sum2 += grid[x + j][y + i];
22
if (grid[x + i][y + j] < 1 || grid[x + i][y + j] > 9 || count[grid[x + i][y + j]] != 0)
23
return false;
24
count[grid[x + i][y + j]] = 1;
25
}
26

27
if (sum1 != sum || sum != sum2 || sum1 != sum2) {
28
return false;
29
}
30
}
31

32
sum1 = grid[x][y] + grid[x + 1][y + 1] + grid[x + 2][y + 2];
33
sum2 = grid[x][y + 2] + grid[x + 1][y + 1] + grid[x + 2][y];
34
if (sum1 != sum2 || sum1 != sum) {
35
return false;
36
}
37

38
return true;
39
}
40
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0