链接:https://leetcode.cn/problems/valid-sudoku
题目:请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次
将拿到的单个数据进行对应的行,列和3X3方格遍历比较
代码
public static boolean isValidSudoku(char[][] board) {
for (int i=0;i<9;i++){
for (int j=0;j<9;j++){
char a = board[i][j];
if (a!=46){
boolean search = search(board, i, j, a);
if (!search){
return false;
}
}
}
}
return true;
}
public static boolean search(char[][] board,int i,int j,char a){
for (int n=0;n<9;n++){
if (n==j) continue;
if (board[i][n]==a)
return false;
}
for (int n=0;n<9;n++){
if (n==i) continue;
if (board[n][j]==a)
return false;
}
int x = i/3;
int y = j/3;
for (int n=0;n<3;n++){
for (int m=0;m<3;m++){
if (x*3+n==i&&y*3+m==j)continue;
if (board[x*3+n][y*3+m]==a)
return false;
}
}
return true;
}
本人小白啥也不懂,侵权请私信删
2022.09.30