📅  最后修改于: 2023-12-03 15:41:09.920000             🧑  作者: Mango
在Sudo放置游戏中,问题8需要我们判断一个 9x9 的数独是否合法。即:
以下是一个数独的例子:
[[5,3, , ,7, , , , ],
[6, , ,1,9,5, , , ],
[ ,9,8, , , , ,6, ],
[8, , , ,6, , , ,3],
[4, , ,8, ,3, , ,1],
[7, , , ,2, , , ,6],
[ ,6, , , , ,2,8, ],
[ , , ,4,1,9, , ,5],
[ , , , ,8, , ,7,9]]
以下是代码示例,我们可以使用3个数组来记录每一行、每一列和每个小九宫格中出现的数字情况,遍历每个空格并更新数组状态,当发现某个空格填入的数字重复时就说明数独不合法了:
def isValidSudoku(board):
rows = [set() for _ in range(9)]
cols = [set() for _ in range(9)]
boxes = [set() for _ in range(9)]
for i in range(9):
for j in range(9):
num = board[i][j]
if num != " ":
if num in rows[i]:
return False
else:
rows[i].add(num)
if num in cols[j]:
return False
else:
cols[j].add(num)
index = i // 3 * 3 + j // 3
if num in boxes[index]:
return False
else:
boxes[index].add(num)
return True