leetcode 36. 有效的数独

题解

使用三个二维数组 a, b, c 分别保存每行,每列,每个 3*3 区块中,相应数字出现的次数

示例代码(go)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
func isValidSudoku(board [][]byte) bool {
a := [9][9]int{}
b := [9][9]int{}
c := [9][9]int{}
for i := 0; i < 9; i++ {
for j := 0; j < 9; j++ {
if board[i][j] == '.' {
continue
}
num := board[i][j] - '0'
k := (i / 3) * 3 + j / 3
a[i][num-1]++
b[j][num-1]++
c[k][num-1]++
if a[i][num-1] > 1 || b[j][num-1] > 1 || c[k][num-1] > 1 {
return false
}
}
}
return true
}