题意:检查数独是否合法,行列及九宫格的数字 不能重复。
思路:暴力检查。
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
bool isRepeat[10];
for(int i = 0; i < board.size(); ++ i) {
memset(isRepeat, 0, sizeof(bool) * 10);
for(int j = 0; j < 9; ++ j) {
if(board[i][j] != '.' && isRepeat[board[i][j] - '0']) return false;
if(board[i][j] != '.') isRepeat[board[i][j] - '0'] = true;
}
}
for(int i = 0; i < board.size(); ++ i) {
memset(isRepeat, 0, sizeof(bool) * 10);
for(int j = 0; j < 9; ++ j) {
if(board[j][i] != '.' && isRepeat[board[j][i] - '0']) return false;
if(board[j][i] != '.') isRepeat[board[j][i] - '0'] = true;
}
}
for(int i = 0 ;i < 3; ++ i) {
for(int j = 0; j < 3; ++ j) {
memset(isRepeat, 0, sizeof(bool) * 10);
for(int k = i * 3; k < i * 3 + 3; ++ k) {
for(int l = j * 3; l < j * 3 + 3; ++ l) {
if(board[k][l] != '.') {
if(isRepeat[board[k][l] - '0']) return false;
isRepeat[board[k][l]-'0'] = true;
}
}
}
}
}
return true;
}
};