Valid Sudoku

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 '.'.

这里我用定义来做的,代码有点长

先看所有行是否有效

所有列是否有效

所有小9宫格是否有效

 1 public class Solution {
 2     public boolean isValidSudoku(char[][] board) {
 3         boolean isValid = true;
 4         //所有行有效
 5         for(int i = 0; i < 9;i++){
 6             if(!isValid(board[i])){
 7                 isValid = false;
 8                 break;
 9             }
10         }
11         //所有列
12         for(int i = 0; i < 9 && isValid; i++){
13             char array[] = new char[9];
14             for(int j = 0; j < 9; j++){
15                 array[j] = board[j][i];
16             }
17             if(!isValid(array)){
18                 isValid = false;
19                 break;
20             }
21         }
22         //所有小9宫格
23         for(int i = 0; i < 9 && isValid;i = i + 3){
24             for(int j = 0; j < 9;j = j + 3){
25                 char array[] = new char[9];
26                 int x = 0;
27                 for(int k = i; k < i + 3; k++){
28                     for(int p = j; p < j + 3;p++){
29                         array[x++] = board[k][p];
30                     }
31                 }
32                 if(!isValid(array)){
33                     isValid = false;
34                     break;
35                 }
36             }
37         }
38         if(isValid)
39             return true;
40         return false;
41     }
42     
43     /**
44      * 判断数组是否有效
45      * @param array
46      * @return
47      */
48     public boolean isValid(char []array){
49         boolean isValid = true;
50         boolean one2Nine[] = new boolean[10];
51         //System.out.println(one2Nine[0]);
52         for(int i = 0; i < 9;i++){
53             if('.' != array[i]){
54                 if(!one2Nine[array[i] - '0']){
55                     one2Nine[array[i] - '0'] = true;
56                 }else{
57                     isValid = false;
58                     break;
59                 }
60             }
61         }
62         if(isValid)
63             return true;
64         else 
65             return false;
66     }

 

posted on 2014-11-13 16:50  luckygxf  阅读(192)  评论(0编辑  收藏  举报

导航