leetcode-36-valid sudoku

题目

判断数独的合法行

描述

题目中,对于没有数字填充的用’.’进行填充
数独合法性要求:

  • 满足每一行、没一列、每一个九宫格内的数字都是1-9,而且不重复

java代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class  {
public boolean isValidSudoku(char[][] board) {
boolean [][]sum1 = new boolean [9][9];
boolean [][]sum2 = new boolean [9][9]; //列
boolean [][]sum3 = new boolean [9][9]; //九宫格
for(int i =0;i<9;i++){
Arrays.fill(sum1[i],false);
Arrays.fill(sum2[i],false);
Arrays.fill(sum3[i],false);
}
for(int i = 0; i < board.length; i++){
for(int j = 0;j < board[i].length;j++){
if(board[i][j] != '.'){
int num = Integer.valueOf(String.valueOf(board[i][j]))-1; //char不能直接转int
int k = i/3*3 + j/3; //该位置属于第几个九宫格
if(sum1[i][num] || sum2[j][num] || sum3[k][num]){
return false;
}
sum1[i][num] = sum2[j][num] = sum3[k][num] = true;
}
}
}
return true;
}
}