算法介绍

判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。

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

来源:力扣(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;

 }

邓奔成
6 声望4 粉丝