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++;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++) {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)24
count[grid[x + i][y + j]] = 1;27
if (sum1 != sum || sum != sum2 || sum1 != sum2) {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) {