乐趣区

关于java:有效的数独

算法介绍

判断一个 9×9 的数独是否无效。只须要依据以下规定,验证曾经填入的数字是否无效即可。

  1. 数字 1-9 在每一行只能呈现一次。
  2. 数字 1-9 在每一列只能呈现一次。
  3. 数字 1-9 在每一个以粗实线分隔的 3×3 宫内只能呈现一次。

起源:力扣(LeetCode)
链接:https://leetcode-cn.com/probl…
著作权归领扣网络所有。商业转载请分割官网受权,非商业转载请注明出处。

代码

   public boolean isValidSudoku(char[][] board) {for(int i = 0;i < board.length;i++){

 // 判断该行

 ArrayList<Integer> olds = new ArrayList<>();

 for (int j = 0;j < board[i].length;j++){if(i % 3 == 0 && j % 3 == 0){ArrayList<Integer> newOlds = new ArrayList<>();

 // 判断该单元格

 for (int m = 0;m < 3;m++){for (int k = 0;k < 3;k++){char item = board[i+m][k+j];

 if(item == '.') continue;

 if(newOlds.indexOf((int)item) >= 0){return false;}

 newOlds.add((int)item);

 }

 }

 }

 char item = board[i][j];

 if(item == '.') continue;

 if(olds.indexOf((int)item) >= 0) return false;

 olds.add((int) item);

 }

 // 判断该列

 olds.clear();

 for (int j = 0;j < board.length;j++){char item = board[j][i];

 if(item == '.') continue;

 if(olds.indexOf((int)item) >= 0) return false;

 olds.add((int)item);

 }

 }

 return true;

 }
退出移动版