Code:
class Solution {
public:
bool pan(int x,int y,char val,vector<vector<char>>& board)
{
for(int i=0;i<9;i++)
{
if(i==x || i==y) continue;
if(board[i][y]==val || board[x][i]==val)
return 0;
}
int rowx=x/3*3,rowy=rowx+3,colx=y/3*3,coly=colx+3;
for(int i=rowx;i<rowy;i++)
for(int j=colx;j<coly;j++)
{
if(i==x && j==y) continue;
if(board[i][j]==val) return 0;
}
return 1;
}
bool isValidSudoku(vector<vector<char>>& board) {
for(int i=0;i<board.size();i++)
for(int j=0;j<board[i].size();j++)
if(board[i][j]>='0' && board[i][j]<='9' && !pan(i,j,board[i][j],board))
return 0;
return 1;
}
};