首页 > 代码库 > Valid Sudoku

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 array46      * @return47      */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     }

 

Valid Sudoku