class Solution {
public int numMagicSquaresInside(int[][] grid) {
int counter = 0, R = grid.length, C = grid[0].length;
for (int i = 0; i < R - 2; i++) {
for (int j = 0; j < C - 2; j++) {
counter += this.IsMagicSquare(grid, i, j);
}
}
return counter;
}
public int IsMagicSquare(int[][] grid,int x, int y) { //return 1 if it is, return 0 if it is notif (grid[x+1][y+1]!=5) return0; //Center number must be 5
Set<Integer> set=new HashSet<>(9); //Check if it contains duplicate number or number out of range [1,9].for (int i=1;i<=9;i++) set.add(i);
for (int i=x;i<x+3;i++) {
for(int j=y;j<y+3;j++) {
if (!set.remove(grid[i][j])) return0;
}
}
if (15 == grid[x][y]+grid[x][y+1]+grid[x][y+2] && //Check if all the sum equals to 15.15 == grid[x][y]+grid[x+1][y+1]+grid[x+2][y+2] &&
15 == grid[x][y]+grid[x+1][y]+grid[x+2][y] &&
15 == grid[x+2][y]+grid[x+2][y+1]+grid[x+2][y+2] &&
15 == grid[x][y+2]+grid[x+1][y+2]+grid[x+2][y+2] &&
15 == grid[x][y+2]+grid[x+1][y+1]+grid[x+2][y] ) {
return1;
}
return0;
}
}
Magic Squares In Gridclass Solution { public int numMagicSquaresInside(int[][] grid) { int counter = 0, R = grid.length, C = grid[0].length; for (int i = 0; i &lt; R - 2...