public class Solution {
public boolean isValidSudoku(char[][] board) {
return row(board) && col(board) && box(board);
}
public boolean row(char[][] board) {
for (int i=0; i<9; i++) {
boolean[] flag = new boolean[10];
for (int j=0; j<9; j++) {
if (markflag(flag, board[i][j])) return false;
}
}
return true;
}
public boolean col(char[][] board) {
for (int i=0; i<9; i++) {
boolean[] flag = new boolean[10];
for (int j=0; j<9; j++) {
if (markflag(flag, board[j][i])) return false;
}
}
return true;
}
public boolean box(char[][] board) {
for (int i=0; i<3; i++) {
for (int j=0; j<3; j++) {
boolean[] flag = new boolean[10];
for (int m=0; m<3; m++) {
for (int n=0; n<3; n++) {
if (markflag(flag, board[i*3+m][j*3+n])) return false;
}
}
}
}
return true;
}
public boolean markflag(boolean[] flag, char c) {
if (c=='.') return false;
int index = c-'0';//convert char to int
if (flag[index]) return true;
else {
flag[index]=true;
return false;
}
}
}
没有评论:
发表评论