class Solution {
public:
bool isValidSudoku(vector<vector<char> > &board) {
for (int i = 0; i < 9; ++i) {
vector<int> count1(9, 0), count2(9, 0), count3(9, 0);
for (int j = 0; j < 9; ++j) {
if (board[i][j] != '.') {
int num1 = board[i][j]'1';
if (count1[num1] != 0)
return false;
else
count1[num1] = 1;
}
if (board[j][i] != '.') {
int num2 = board[j][i]'1';
if (count2[num2] != 0)
return false;
else
count2[num2] = 1;
}
if (board[i/3*3+j/3][i%3*3+j%3] != '.') {
int num3 = board[i/3*3+j/3][i%3*3+j%3]  '1';
if (count3[num3] != 0)
return false;
else
count3[num3] = 1;
}
}
}
return true;
}
};
My solution for your reference


A java solution with same idea while using bitwise operation.
public class Solution{ public boolean isValidSudoku(char[][] board) { if (board.length!=9board[0].length!=9) return false; int[] row= new int[9]; int[] col= new int[9];int[] sqr= new int[9]; for (int i=0;i<9;i++){ for (int j=0;j<9;j++){ if (board[i][j]!='.'){ int num = board[i][j]'0'; if ((row[i]&1<<num)>0) return false; else row[i]=1<<num; if ((col[j]&1<<num)>0) return false; else col[j]=1<<num; int sqr_num=(ii%3)+j/3; if ((sqr[sqr_num]&1<<num)>0) return false; else sqr[sqr_num]=1<<num; } } } return true; } }