根据坐标找到对应的行,列,块即可。
设置三个标志矩阵。
public class Solution {
public boolean isValidSudoku(char[][] board) {int[][] rowflag=new int[9][9];
int[][] colflag=new int[9][9];
int[][] chuflag=new int[9][9];
int i,j,tmp;
for(i=0;i<9;i++)
for(j=0;j<9;j++)
{
rowflag[i][j]=0;
colflag[i][j]=0;
chuflag[i][j]=0;
}
for(i=0;i<9;i++)
for(j=0;j<9;j++)
{
if(board[i][j]=='.')
continue;
tmp=board[i][j]-'0'-1;
if(rowflag[i][tmp]!=0 || colflag[j][tmp]!=0 || chuflag[i/3*3+j/3][tmp]!=0)
return false;
else
{
rowflag[i][tmp]=1;
colflag[j][tmp]=1;
chuflag[i/3*3+j/3][tmp]=1;
}
}
return true;
}
}
本文介绍了一种通过设置三个标志矩阵来验证数独是否有效的算法。该算法通过遍历数独矩阵并检查每一行、每一列及每一个宫格内的数字是否重复来确保数独的有效性。
549

被折叠的 条评论
为什么被折叠?



