题目的的意思:给出的9*9的矩阵,是不是符合一个Sudoku问题(出现的数字的行、列、3*3的小格子)的数字1-9
没有重复出现
我的做法时间上是O(N),但是用了三个9*9的二维boolean数组进行标记
分别是row[i][num] 代表第i行num是否出现过
分别是col[i][num] 代表第i列num是否出现过
分别是matr[i][num] 代表第i个矩阵num是否出现过
public class Solution {
static final int SIZE = 9;
public boolean isValidSudoku(char[][] board) {
boolean[][] row = new boolean[SIZE][SIZE];
boolean[][] col = new boolean[SIZE][SIZE];
boolean[][] matr = new boolean[SIZE][SIZE];
for(int i = 0; i < SIZE; ++i){
for(int j = 0; j < SIZE; ++j){
if(board[i][j] !='.'){
int num = board[i][j] - '1';
if(row[i][num] == false){
row[i][num] = true;
}else {
return false;
}
if(col[j][num] == false){
col[j][num] = true;
}else {
return false;
}
int ti = (i / 3) * 3;
int tj = (j / 3) ;
if(matr[ti + tj][num] == false){
matr[ti + tj][num] = true;
}else{
return false;
}
}
}
}
return true;
}
}