判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
- 数字
1-9
在每一行只能出现一次。 - 数字
1-9
在每一列只能出现一次。 - 数字
1-9
在每一个以粗实线分隔的3x3
宫内只能出现一次。
上图是一个部分填充的有效的数独。
数独部分空格内已填入了数字,空白格用 '.'
表示。
说明:
- 一个有效的数独(部分已被填充)不一定是可解的。
- 只需要根据以上规则,验证已经填入的数字是否有效即可。
- 给定数独序列只包含数字
1-9
和字符'.'
。 - 给定数独永远是
9x9
形式的。
class Solution {
func isValidSudoku(_ board: [[Character]]) -> Bool {
for i in 0..<9 {
var row = [Character: Int]()
var col = [Character: Int]()
var cube = [Character: Int]()
for j in 0..<9 {
//行
if board[i][j] != "." {
if row[board[i][j]] == 1 {
return false
}else {
row[board[i][j]] = 1
}
}
//列
if board[j][i] != "." {
if col[board[j][i]] == 1 {
return false
}else {
col[board[j][i]] = 1
}
}
//宫
let cubeX = 3 * (i/3) + j/3
let cubeY = 3 * (i%3) + j%3
if board[cubeX][cubeY] != "." {
if cube[board[cubeX][cubeY]] == 1 {
return false
}else {
cube[board[cubeX][cubeY]] = 1
}
}
}
}
return true
}
}