https://oj.leetcode.com/problems/valid-sudoku/
判断是不是一个有效的九宫格。
行检验,列检验,子九宫格检验。
这是一个类似于操作矩阵的算法题。比如让你给一个矩阵旋转90,180度等等。
题目简单,写起来跟简单就不搭边。。。
public class Solution {
public static boolean isValidSudoku(char[][] board) {
HashSet<Character> set=new HashSet<Character>();
for(int i=0;i<9;i++){
set.clear();
for(int j=0;j<9;j++){
if(board[i][j]!='.'){
if(set.contains(board[i][j])){
return false;
}else{
set.add(board[i][j]);
}
}
}
}
//行测试
for(int j=0;j<9;j++){
set.clear();
for(int i=0;i<9;i++){
if(board[i][j]!='.'){
if(set.contains(board[i][j])){
return false;
}else{
set.add(board[i][j]);
}
}
}
}
//列测试
for(int i=0;i<9;i+=3){
for(int j=0;j<9;j+=3){
set.clear();
for(int k=0;k<3;k++){
for(int l=0;l<3;l++){
if(board[i+k][j+l]!='.'){
if(set.contains(board[i+k][j+l])){
return false;
}else{
set.add(board[i+k][j+l]);
}
}
}
}
}
}
return true;
}
}