Wednesday, December 5, 2018

840. Magic Squares In Grid

bug -> all grid[y][x] must in [1, 9]

86.19 %
class Solution {
    public int numMagicSquaresInside(int[][] grid) {
int result = 0;
if (grid == null || grid.length == 0 || grid[0] == null || grid[0].length == 0) {
return result;
}
int rows = grid.length;
int cols = grid[0].length;
for (int y = 0; y < rows; y++) {
for (int x = 0; x < cols; x++) {
if (isValid(grid, y, x)) {
result++;
}
}
}
return result;
}

private boolean isValid(int[][] grid, int y, int x) {
if (y + 2 >= grid.length || x + 2 >= grid[0].length) {
return false;
}
// .. a0 a1 a2 .. .. ..
// .. a3 a4 a5 .. .. ..
// .. a6 a7 a8 .. .. ..
int[] a = new int[9];
for (int dy = 0; dy < 3; dy++) {
for (int dx = 0; dx < 3; dx++) {
                int d = dy * 3 + dx;
a[d] = grid[y + dy][x + dx];
                if (a[d] < 1 || a[d] > 9) {
                    return false;
                }
}
}
int sum = a[0] + a[1] + a[2];
return a[3] + a[4] + a[5] == sum
&& a[6] + a[7] + a[8] == sum
&& a[0] + a[3] + a[6] == sum
&& a[1] + a[4] + a[7] == sum
&& a[2] + a[5] + a[8] == sum
&& a[0] + a[4] + a[8] == sum
&& a[2] + a[4] + a[6] == sum;
}
}


No comments:

Post a Comment