36. Valid Sudoku
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
for(int i=0;i<board.size();i++){
unordered_set<char> row_set,cal_set,sub_set;
for(int j=0;j<board[i].size();j++){
if(board[i][j]!='.'){
if(row_set.find(board[i][j])!=row_set.end())
return false;
else
row_set.insert(board[i][j]);
}
if(board[j][i]!='.'){
if(cal_set.find(board[j][i])!=cal_set.end())
return false;
else
cal_set.insert(board[j][i]);
}
if(board[i/3*3+j/3][i%3*3+j%3]!='.'){ //第i个九宫格的第j个格点的行号可表示为i/3*3+j/3,列号可表示为i%3*3+j%3
if(sub_set.find(board[i/3*3+j/3][i%3*3+j%3])!=sub_set.end())
return false;
else
sub_set.insert(board[i/3*3+j/3][i%3*3+j%3]);
}
}
}
return true;
}
};