Valid Sudoku
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.
1 public class Solution { 2 public boolean isValidSudoku(char[][] board) { 3 if (board == null) { 4 return false; 5 } 6 boolean[] visited = new boolean[9]; 7 //row 8 for (int i = 0; i < 9; i++) { 9 Arrays.fill(visited, false); 10 for (int j = 0; j < 9; j++) { 11 if (!check(visited, board[i][j])) { 12 return false; 13 } 14 } 15 } 16 //colunm 17 for (int i = 0; i < 9; i++) { 18 Arrays.fill(visited, false); 19 for (int j = 0; j < 9; j++) { 20 if (!check(visited, board[j][i])) { 21 return false; 22 } 23 } 24 } 25 26 //subMatrix 27 for (int i = 0; i < 9; i += 3) { 28 for (int j = 0; j < 9; j += 3) { 29 Arrays.fill(visited, false); 30 for (int k = 0; k < 9; k++) { 31 if (!check(visited, board[i + k / 3][j + k % 3])) { 32 return false; 33 } 34 } 35 } 36 } 37 return true; 38 } 39 40 private boolean check(boolean[] visited, char digit) { 41 if (digit == '.') { 42 return true; 43 } 44 int num = digit - '0'; 45 if (num < 1 || num > 9 || visited[num - 1]) { 46 return false; 47 } 48 visited[num - 1] = true; 49 return true; 50 } 51 }

浙公网安备 33010602011771号