class Solution {
public boolean isValidSudoku(char[][] board) {
for(int i=0;i<9;++i){
Set<Character> temp=new HashSet<Character>();
for(int j=0;j<9;++j){
if(temp.contains(board[i][j])){
return false;
}else{
if(board[i][j]!='.'){
temp.add(board[i][j]);
}
}
}
}
for(int i=0;i<9;++i){
Set<Character> temp=new HashSet<Character>();
for(int j=0;j<9;++j){
if(temp.contains(board[j][i])){
return false;
}else{
if(board[j][i]!='.'){
temp.add(board[j][i]);
}
}
}
}
int ji=0,ki=0;
for(int i=0;i<9;++i){
Set<Character> temp=new HashSet<Character>();
for(int j=ji;j<ji+3;++j){
for(int k=ki;k<ki+3;++k){
if(temp.contains(board[j][k])){
return false;
}else{
if(board[j][k]!='.'){
temp.add(board[j][k]);
}
}
}
}
if(ki!=6){
ki+=3;
}else{
ki=0;
ji+=3;
}
}
return true;
}
}
简单模拟没啥问题,ki,ji用于减少代码量。
题解里的一次迭代。主要是思维角度的问题~