🌗 36. 有效的数独
2022年10月10日
- algorithm
🌗 36. 有效的数独
难度: 🌗
问题描述
解法
class Solution {
int len = 9;
public boolean isValidSudoku(char[][] board) {
// 思路:
// 依次判断每条条件
for(int i = 0; i < len; i ++) {
for(int j = 0; j < len; j ++) {
if(board[i][j] == '.') {
continue;
} else {
if(!isValid(board, i, j)) {
return false;
}
}
}
}
return true;
}
private boolean isValid(char[][] board, int row, int col) {
char cur = board[row][col];
for(int i = 0; i < len; i ++) {
if(i == row || board[i][col] == '.') {
continue;
}
if(board[i][col] == cur) {
return false;
}
}
for(int j = 0; j < len; j ++) {
if(j == col || board[row][j] == '.') {
continue;
}
if(board[row][j] == cur) {
return false;
}
}
// 所在 3 * 3 方格
int m = 3 * (row / 3);
int n = 3 * (col / 3);
for(int i = m; i < m + 3; i ++) {
for(int j = n; j < n + 3; j ++) {
if(i == row && j == col) {
continue;
}
if(board[i][j] == '.') {
continue;
}
if(board[i][j] == cur) {
// System.out.println(i + " " + j + " " + board[i][j] + " " + cur);
return false;
}
}
}
return true;
}
}