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.
class Solution {
public:
bool isValidSudoku(vector<vector<char> > &board) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int tmp[10];
for(int i=0 ; i<10 ; i++)
tmp[i]=0;
for(int i=0 ; i<9 ; i++){
for(int j=0 ; j<9 ; j++){
if(board[i][j]!='.'){
tmp[board[i][j]-'1']++;
if(tmp[board[i][j]-'1']>1)
return false;
}
}
for(int k=0 ; k<10 ; k++)
tmp[k]=0;
}
for(int i=0 ; i<9 ; i++){
for(int j=0 ; j<9 ; j++){
if(board[j][i]!='.'){
tmp[board[j][i]-'1']++;
if(tmp[board[j][i]-'1']>1)
return false;
}
}
for(int k=0 ; k<10 ; k++)
tmp[k]=0;
}
for(int i=0 ; i<9 ; i++){
tmp[board[0+3*(i/3)][0+3*(i%3)]=='.'?9:(board[0+3*(i/3)][0+3*(i%3)]-'1')]++;
tmp[board[0+3*(i/3)][1+3*(i%3)]=='.'?9:(board[0+3*(i/3)][1+3*(i%3)]-'1')]++;
tmp[board[0+3*(i/3)][2+3*(i%3)]=='.'?9:(board[0+3*(i/3)][2+3*(i%3)]-'1')]++;
tmp[board[1+3*(i/3)][0+3*(i%3)]=='.'?9:(board[1+3*(i/3)][0+3*(i%3)]-'1')]++;
tmp[board[1+3*(i/3)][1+3*(i%3)]=='.'?9:(board[1+3*(i/3)][1+3*(i%3)]-'1')]++;
tmp[board[1+3*(i/3)][2+3*(i%3)]=='.'?9:(board[1+3*(i/3)][2+3*(i%3)]-'1')]++;
tmp[board[2+3*(i/3)][0+3*(i%3)]=='.'?9:(board[2+3*(i/3)][0+3*(i%3)]-'1')]++;
tmp[board[2+3*(i/3)][1+3*(i%3)]=='.'?9:(board[2+3*(i/3)][1+3*(i%3)]-'1')]++;
tmp[board[2+3*(i/3)][2+3*(i%3)]=='.'?9:(board[2+3*(i/3)][2+3*(i%3)]-'1')]++;
for(int i=0 ; i<9 ; i++){
if(tmp[i]>1)
return false;
}
for(int k=0 ;k<10 ;k++)
tmp[k]=0;
}
return true;
}
};