判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
class Solution {
public boolean isValidSudoku(char[][] board) {
boolean[][] row=new boolean[9][9];//记录每行是否有重复
boolean[][] col=new boolean[9][9];//记录每列是否有重复
boolean[][] block=new boolean[9][9];//记录每块是否有重复
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
if(board[i][j]!='.'){
int num=board[i][j]-'1';
int blocknum=i/3*3+j/3;
if(row[i][num]||col[j][num]||block[blocknum][num]){
return false;
} //遇到重复返回false
else{//不重复的地方标记true
row[i][num]=true;
col[j][num]=true;
block[blocknum][num]=true;
}
}
}
}
return true;
}
}