Untitled
unknown
c_cpp
a year ago
1.3 kB
12
Indexable
class Solution {
public:
bool isMagic(int r, int c, vector<vector<int>>& grid) {
int freq[9] = {};
int row_sum[3] = {};
int col_sum[3] = {};
for (int i = r; i < r + 3; i++) {
for (int j = c; j < c + 3; j++) {
int val = grid[i][j];
// Check distinct value
if (val < 1 || val > 9 || ++freq[val-1] > 1)
return false;
row_sum[i-r] += val;
col_sum[j-c] += val;
}
}
for (int i = 0; i < 3; i++) {
if (row_sum[i] != 15 || col_sum[i] != 15)
return false;
}
if (grid[r][c] + grid[r+1][c+1] + grid[r+2][c+2] != 15)
return false;
if (grid[r][c+2] + grid[r+1][c+1] + grid[r+2][c] != 15)
return false;
return true;
}
int numMagicSquaresInside(vector<vector<int>>& grid) {
int res = 0;
int row = grid.size(), col = grid[0].size();
for (int i = 0; i < row - 2; i++) {
for (int j = 0; j < col - 2; j++) {
if (isMagic(i, j, grid))
res++;
}
}
return res;
}
};Editor is loading...
Leave a Comment