原题
/*
@v7fgg
执行用时:3 ms, 在所有 Java 提交中击败了57.57%的用户
内存消耗:40.2 MB, 在所有 Java 提交中击败了100.00%的用户
2020年7月8日 14:01
*/
class Solution {
public boolean isValidSudoku(char[][] board) {
//先判断行
for(int i=0;i<9;i++){
Set<Character> s=new HashSet<>();
for(int j=0;j<9;j++){
char c=board[i][j];
if(c!='.'){
if(s.contains(c)){return false;}
s.add(c);
}
}
}
//判断列
for(int j=0;j<9;j++){
Set<Character> s=new HashSet<>();
for(int i=0;i<9;i++){
char c=board[i][j];
if(c!='.'){
if(s.contains(c)){return false;}
s.add(c);
}
}
}
//判断九格
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
//已经确定哪个格子了
Set<Character> s=new HashSet<>();
for(int k=0;k<3;k++){
for(int l=0;l<3;l++){
char c=board[3*i+k][3*j+l];
if(c!='.'){
if(s.contains(c)){return false;}
s.add(c);
}
}
}
}
}
return true;
}
}
/*
@v7fgg
执行用时:2 ms, 在所有 Java 提交中击败了95.62%的用户
内存消耗:40.2 MB, 在所有 Java 提交中击败了100.00%的用户
2020年7月8日 14:35
*/
class Solution {
public boolean isValidSudoku(char[][] board) {
int[][] hang=new int[9][9];//row
int[][] lie=new int[9][9];//colomn
int[][] gezi=new int[9][9];//9-digit cell
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
int x=board[i][j]-'0';
if(x>=1&&x<=9){
hang[i][x-1]++;
lie[j][x-1]++;
gezi[i/3*3+j/3][x-1]++;
if(hang[i][x-1]>1||lie[j][x-1]>1||gezi[i/3*3+j/3][x-1]>1){
return false;
}
}
}
}
return true;
}
}