# 有效的数独
# 1.数字 1-9 在每一行只能出现一次。
# 2.数字 1-9 在每一列只能出现一次。
# 3.数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
class Solution(object):
def is_valid_sudoku(self, board):
# 将board中的.全部改成数字0
length = len(board)
for i in range(length):
for j in range(length):
if board[i][j] == '.':
board[i][j] = 0
for i in range(length):
for j in range(length):
if board[i][j] != 0:
# 寻找在同一行是否有相同的数字
for column in range(length):
if column != j and board[i][j] == board[i][column]: # column != j是排除找到了相同位置的数字
return False
# 寻找在同一列是否有相同的数字
for row in range(length):
if row != i and board[i][j] == board[row][j]: # 同上
return False
# 寻找在同一3*3的方块内是否有相同的数字
for line in range((i // 3)*3,(i // 3) * 3 + 3):
# //是整除的意思,如5//3,4//3值都为1。 /是除法
for col in range ((j // 3)*3,(j // 3) * 3 + 3):
# %是取余的意思
if line != i and col != j and board[i][j] == board[line][col]:
return False
return True