问题连接:https://oj.leetcode.com/problems/valid-sudoku/
问题描述:进链接看吧,我不贴图了。。。。
问题API:public boolean isValidSudoku(char[][] board)
问题分析:这题其实就很简单,做好每一行每一列每一个3*3的格子的检测就可以了。。直接给代码了:
public boolean rowCheck(char[][] board){
for(int i = 0; i < board.length; i++){
boolean[] appeared = new boolean[10];
for(int j = 0; j < board[0].length; j++){
if(board[i][j] == '.')
continue;
if(appeared[board[i][j] - '0'])
return false;
appeared[board[i][j] - '0'] = true;
}
}
return true;
}
public boolean columnCheck(char[][] board){
for(int i = 0; i < board.length; i++){
boolean[] appeared = new boolean[10];
for(int j = 0; j < board[0].length; j++){
if(board[j][i] == '.')
continue;
if(appeared[board[j][i] - '0'])
return false;
appeared[board[j][i] - '0'] = true;
}
}
return true;
}
public boolean blockCheck(char[][] board){
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
boolean[] appeared = new boolean[10];
for(int k = 0; k < 3; k++){
for(int l = 0; l < 3; l++){
char cur = board[k + i * 3][l + j * 3];
if(cur == '.')
continue;
if(appeared[cur - '0'])
return false;
appeared[cur - '0'] = true;
}
}
}
}
return true;
}
public boolean isValidSudoku(char[][] board) {
return rowCheck(board) && columnCheck(board) && blockCheck(board);
}