Valid Sudoku
lc 36
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 '.'.
查看是不是valid就是一行一行比较就行了
time complexity o(m + n + mn) --> o(mn) space complexity o(9) --> constant time
public class Solution {
public boolean isValidSudoku(char[][] board) {
boolean[] visited = new boolean[9];
//row
for(int i = 0; i < 9; i++){
Arrays.fill(visited, false);
for(int j = 0; j < 9; j++){
if(board[i][j] == '.') continue;
int num = board[i][j] - '0';
if(num < 1 || num > 9 ||visited[num - 1] == true){
return false;
}else{
visited[num - 1] = true;
}
}
}
//column
for(int i = 0; i < 9; i++){
Arrays.fill(visited, false);
for(int j = 0; j < 9; j++){
if(board[j][i] == '.') continue;
int num = board[j][i] - '0';
if(num < 1 || num > 9 ||visited[num - 1] == true){
return false;
}else{
visited[num - 1] = true;
}
}
}
//square
for(int i = 0; i < 9; i+=3){
for(int j = 0; j < 9; j+=3){
Arrays.fill(visited, false);
for(int k = 0; k < 9; k++){
if(board[i + k / 3][j + k % 3] == '.') continue;
int num = board[i + k /3][j + k % 3] - '0';
if(num < 1 || num > 9 ||visited[num - 1] == true){
return false;
}else{
visited[num - 1] = true;
}
}
}
}
return true;
}
}