一次遍历法
使用哈希表进行查重
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
vector<unordered_map<int,bool>>row(9);
vector<unordered_map<int,bool>>col(9);
vector<unordered_map<int,bool>>cell(9);
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
{
if(board[i][j]=='.')
continue;
auto iter1=row[i].find(board[i][j]);
auto iter2=col[j].find(board[i][j]);
auto iter3=cell[3*(i/3)+j/3].find(board[i][j]);
if(iter1!=row[i].end()||iter2!=col[j].end()||iter3!=cell[3*(i/3)+j/3].end())
return false;
row[i][board[i][j]]=true;
col[j][board[i][j]]=true;
cell[3*(i/3)+j/3][board[i][j]]=true;
}
return true;
}
};