题意
判断一个 9∗9 的数独矩阵是否合法
思路
暴力扫描,先判断行和列,最后判断每一个小方块,中间使用 hash 来记录数字是否出现
代码
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
for(int i = 0; i < 9; i++){
map<char, int>mp;
for(int j = 0; j < 9; j++){
if(board[i][j] == '.') continue;
if(mp[board[i][j]] > 0){
return false;
}
mp[board[i][j]]++;
}
mp.clear();
for(int j = 0; j < 9; j++){
if(board[j][i] == '.') continue;
if(mp[board[j][i]] > 0){
return false;
}
mp[board[j][i]]++;
}
}
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
map<char, int>mp;
for(int k = i * 3; k < i * 3 + 3; k++){
for(int q = j * 3; q < j * 3 + 3; q++){
if(board[k][q] == '.') continue;
if(mp[board[k][q]] > 0){
return false;
}
mp[board[k][q]]++;
}
}
mp.clear();
}
}
return true;
}
};