Valid Sudoku
给一个2d数组, 是数独的数组, 求是否是一个正确的数独.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
public class Solution { public boolean isValidSudoku(char[][] board) { boolean[] visited = new boolean[9]; for(int i = 0 ; i < 9; i++) { Arrays.fill(visited,false); for(int j = 0 ; j < 9; j++) if(!check(visited,board[i][j])) return false; } for(int i = 0 ; i < 9; i++) { Arrays.fill(visited,false); for(int j = 0 ; j < 9; j++) if(!check(visited,board[j][i])) return false; } 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(!check(visited,board[i+k/3][j+k%3])) return false; } } } return true; } public boolean check(boolean[] visited, char digit) { if(digit == '.') return true; int n = digit - '0'; if(n > 9 || n < 1 || visited[n-1]) return false; visited[n-1] = true; return true; } } |