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 }

 

posted @ 2016-05-13 09:36  YuriFLAG  阅读(123)  评论(0)    收藏  举报