Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character '.'
.
A partially filled sudoku which is valid.
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
class Solution {
bool flag[9];
bool check(char x){
if(x=='.')
return true;
if(flag[x-'1']==false){
flag[x-'1']=true;
return true;
}
else
return false;
}
public:
bool isValidSudoku(vector<vector<char> > &board) {
for(int i=0; i<9;i++){
memset(flag, false, 9);
for(int j=0; j<9; j++){ //判断行
if(!check(board[i][j]))
return false;
}
memset(flag, false, 9);
for(int j=0; j<9; j++){//判断列
if(!check(board[j][i]))
return false;
}
}
for(int k=0; k<3; k++){//判断九个方格
memset(flag, false, 9);
for(int i=3*k; i<3*k+3; i++){
for(int j=0; j<3; j++)
if(!check(board[i][j]))
return false;
}
memset(flag, false, 9);
for(int i=3*k; i<3*k+3; i++){
for(int j=3; j<6; j++)
if(!check(board[i][j]))
return false;
}
memset(flag, false, 9);
for(int i=3*k; i<3*k+3; i++){
for(int j=6; j<9; j++)
if(!check(board[i][j]))
return false;
}
}
return true;
}
};