Description
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character '.'
.
A partially filled sudoku which is valid.
Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
# Code
```C++
class Solution {
public:
bool isValidSudoku(vector<vector<char>>& board) {
for (int i = 0; i < 9; i++){
int check[9] = {0};
for (int j = 0;j < 9;j++){
if (board[i][j] != '.')
if (check[board[i][j] - 49] == 0)
check[board[i][j] - 49]++;
else return false;
}
}
for (int j = 0; j < 9;j++){
int check[9] = {0};
for (int i = 0;i < 9;i++){
if (board[i][j] != '.')
if (check[board[i][j] - 49] == 0)
check[board[i][j] - 49]++;
else return false;
}
}
for (int i = 0; i < 9;i += 3){
for (int j = 0;j < 9; j += 3){
int check[9] = {0};
if (board[i][j] != '.')
if (check[board[i][j] - 49] == 0)
check[board[i][j] - 49]++;
else return false;
if (board[i][j+1] != '.')
if (check[board[i][j+1] - 49] == 0)
check[board[i][j+1] - 49]++;
else return false;
if (board[i][j+2] != '.')
if (check[board[i][j+2] - 49] == 0)
check[board[i][j+2] - 49]++;
else return false;
if (board[i+1][j] != '.')
if (check[board[i+1][j] - 49] == 0)
check[board[i+1][j] - 49]++;
else return false;
if (board[i+1][j+1] != '.')
if (check[board[i+1][j+1] - 49] == 0)
check[board[i+1][j+1] - 49]++;
else return false;
if (board[i+1][j+2] != '.')
if (check[board[i+1][j+2] - 49] == 0)
check[board[i+1][j+2] - 49]++;
else return false;
if (board[i+2][j] != '.')
if (check[board[i+2][j] - 49] == 0)
check[board[i+2][j] - 49]++;
else return false;
if (board[i+2][j+1] != '.')
if (check[board[i+2][j+1] - 49] == 0)
check[board[i+2][j+1] - 49]++;
else return false;
if (board[i+2][j+2] != '.')
if (check[board[i+2][j+2] - 49] == 0)
check[board[i+2][j+2] - 49]++;
else return false;
}
}
return true;
}
};
Appendix
- Link: https://leetcode.com/problems/valid-sudoku/
- Run Time: 32ms