9个横行9个竖行9个3*3的方格各设置一个set。
对每个方格遍历,“。”继续,数字的话判断哪个格的横竖行有没有重复的数字。
方格判断用的是i/3*3 + j/3把9*9的格分成
public class Solution {
public boolean isValidSudoku(char[][] board) {
List<Set<Character>>rl=new ArrayList<Set<Character>>();
List<Set<Character>>cl=new ArrayList<Set<Character>>();
List<Set<Character>>sl=new ArrayList<Set<Character>>();
for(int i=0;i<9;i++){
rl.add(new HashSet<Character>());
cl.add(new HashSet<Character>());
sl.add(new HashSet<Character>());
}
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
char c=board[i][j];
if(c=='.')continue;
else if(rl.get(i).contains(c) || cl.get(j).contains(c) || sl.get(i/3*3 + j/3).contains(c)) return false;
else{
rl.get(i).add(c);
cl.get(j).add(c);
sl.get(i/3*3+j/3).add(c);
}
}
}
return true;
}
}了9个3*3;