class Solution {
public:
int tag[10];
bool isValidSudoku(vector<vector<char>>& board) {
for(int i=0;i<9;i++)
{
memset(tag,0,sizeof(tag));
for(int j=0;j<9;j++)
{
if(board[i][j]=='.') continue;
int x = board[i][j]-'0';
if(tag[x]==1)
return false;
tag[x]=1;
}
memset(tag,0,sizeof(tag));
for(int j=0;j<9;j++)
{
if(board[j][i]=='.') continue;
int x = board[j][i]-'0';
if(tag[x]==1)
return false;
tag[x]=1;
}
}
memset(tag,0,sizeof(tag));
for(int p=0;p<3;p++){
for(int i=0;i<3;i++)
{
memset(tag,0,sizeof(tag));
for(int j=i*3;j<3+i*3;j++)
{
for(int k=p*3;k<3+p*3;k++)
{
if(board[j][k]=='.') continue;
int x = board[j][k]-'0';
if(tag[x]==1)
return false;
tag[x]=1;
}
}
}
}
return true;
}
};