Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:
- Each row must contain the digits
1-9
without repetition. - Each column must contain the digits
1-9
without repetition. - Each of the 9
3x3
sub-boxes of the grid must contain the digits1-9
without repetition.
A partially filled sudoku which is valid.
The Sudoku board could be partially filled, where empty cells are filled with the character '.'
.
思路:1. 检查行。2. 检查列。3.检查block。tricky 的地方在于block怎么check, x / 3 * 3 + 3
class Solution {
public boolean isValidSudoku(char[][] board) {
int m = board.length;
int n = board[0].length;
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
if(board[i][j] == '.') {
continue;
} else {
if(!isvalid(board, i, j)) {
return false;
}
}
}
}
return true;
}
private boolean isvalid(char[][] board, int x, int y) {
int m = board.length;
int n = board[0].length;
char c = board[x][y];
// check row;
for(int j = 0; j < n; j++) {
if(j != y && board[x][j] == c) {
return false;
}
}
// check col;
for(int i = 0; i < m; i++) {
if(i != x && board[i][y] == c) {
return false;
}
}
// check cube;
for(int i = x / 3 * 3; i < x / 3 * 3 + 3; i++) {
for(int j = y / 3 * 3; j < y / 3 * 3 + 3; j++) {
if(i != x && j != y && board[i][j] == c) {
return false;
}
}
}
return true;
}
}