class Solution {
public:
bool validcell(vector<int> &vi) {
sort(vi.begin(), vi.end());
for (int i = 1; i < vi.size(); ++i) {
if (vi[i] == vi[i - 1]) {
return false;
}
}
return true;
}
bool isValidSudoku(vector<vector<char>>& board) {
vector<int> vi;
bool valid = true;
for (int i = 0; i < 9 && valid; ++i) {
//row
vi.clear();
for (int j = 0; j < 9; ++j) {
if (board[i][j] != '.') {
vi.push_back(board[i][j] - '0');
}
}
valid = valid && validcell(vi);
//column
vi.clear();
for (int j = 0; j < 9; ++j) {
if (board[j][i] != '.') {
vi.push_back(board[j][i] - '0');
}
}
valid = valid && validcell(vi);
//square
vi.clear();
int r = i / 3 * 3, c = i % 3 * 3;
for (int j = 0; j < 9; ++j) {
int nr = r + j / 3;
int nc = c + j % 3;
if (board[nr][nc] != '.') {
vi.push_back(board[nr][nc] - '0');
}
}
valid = valid && validcell(vi);
}
return valid;
}
};