class Solution {
public boolean isValidSudoku(char[][] board) {
boolean[] flag = new boolean[9];
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++)
flag[j] = false;
for (int j = 0; j < 9; j++) {
if (board[i][j] != '.') {
if (flag[board[i][j] - '1'] == true)
return false;
flag[board[i][j] - '1'] = true;
}
}
for (int j = 0; j < 9; j++)
flag[j] = false;
for (int j = 0; j < 9; j++) {
if (board[j][i] != '.') {
if (flag[board[j][i] - '1'] == true)
return false;
flag[board[j][i] - '1'] = true;
}
}
for (int j = 0; j < 9; j++)
flag[j] = false;
int x = i / 3 * 3;
int y = i % 3 * 3;
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
if (board[x + j][y + k] != '.') {
if (flag[board[x + j][y + k] - '1'] == true)
return false;
flag[board[x + j][y + k] - '1'] = true;
}
}
}
}
return true;
}
}