36. Valid Sudoku
Last updated
Last updated
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
for (int i = 0; i < 3; i++){
for (int j = 0; j < 3; j++){
if (!isValidWindow(board, i * 3, j * 3)) {
return false;
}
}
}
for (int i = 0; i < 9; i++){
if (!isValidRow(board, i)) {
return false;
}
if (!isValidCol(board, i)) {
return false;
}
}
return true;
}
private:
bool isValidWindow(vector<vector<char>> board, int startX, int startY) {
vector<int> window(10, 0);
for (int i = startX; i < startX + 3; i++) {
for (int j = startY; j < startY +3; j++) {
int index = int(board[i][j] - '0');
if(index <= 9 && index >= 1) {
if (window[index]) {
return false;
} else {
window[index]++;
}
}
}
}
return true;
}
bool isValidRow(vector<vector<char>> board, int start) {
vector<int> window(10, 0);
for (int i = 0; i < 9; i++) {
int index = int(board[start][i] - '0');
if(index <= 9 && index >= 1) {
if (window[index]) {
return false;
} else {
window[index]++;
}
}
}
return true;
}
bool isValidCol(vector<vector<char>> board, int start) {
vector<int> window(10, 0);
for (int i = 0; i < 9; i++) {
int index = int(board[i][start] - '0');
if(index <= 9 && index >= 1) {
if (window[index]) {
return false;
} else {
window[index]++;
}
}
}
return true;
}
};