Solution
public class Solution {
public boolean isValidSudoku(char[][] board) {
boolean[] array = new boolean[9];
//row
for (int i = 0; i < 9; i++) {
Arrays.fill(array, false);
for (int j = 0; j < 9; j++) {
if (!process(array, board[i][j])) {
return false;
}
}
}
//column
for (int i = 0; i < 9; i++) {
Arrays.fill(array, false);
for (int j = 0; j < 9; j++) {
if (!process(array, board[j][i])) {
return false;
}
}
}
//mix
for (int i = 0; i < 9; i += 3) {
for (int j = 0; j < 9; j += 3) {
Arrays.fill(array, false);
for (int k = 0; k < 9; k++) {
if (!process(array, board[i + k / 3][j + k % 3])) {
return false;
}
}
}
}
return true;
}
public boolean process(boolean[] array, char c) {
if (c == '.') {
return true;
}
int n = c - '0';
if (n < 1 || n > 9 || array[n - 1]) {
return false;
}
array[n - 1] = true;
return true;
}
}
Problem#2
* 数据类型之间的转换
* 代码重复的地方用函数写
* 判断数组用于下一种判断时没有初始化
* 仔细写,小问题太多
Problem#1
* set的方法
* 不需要set就能实现,回忆树的算法