算法介绍
判断一个 9×9 的数独是否无效。只须要依据以下规定,验证曾经填入的数字是否无效即可。
- 数字 1-9 在每一行只能呈现一次。
- 数字 1-9 在每一列只能呈现一次。
- 数字 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;
}