描述
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
- 数字 1-9 在每一行只能出现一次。
- 数字 1-9 在每一列只能出现一次。
- 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
Python
分别判断行列和方阵中的数字是否符合要求
class Solution:
def isValidSudoku(self, board):
"""
:type board: List[List[str]]
:rtype: bool
"""
return self.isRowValid(board) and self.isColValid(board) and self.isSquareValid(board)
def isListValid(self,lst):
tmp = [i for i in lst if i != '.']
return len(set(tmp))==len(tmp)
def isRowValid(self,board):
for row in board:
if not self.isListValid(row):
return False
return True
def isColValid(self,board):
for col in zip(*board):
if not self.isListValid(col):
return False
return True
def isSquareValid(self,board):
for i in [0,3,6]:
for j in [0,3,6]:
tmp = [board[x][y] for x in range(i,i+3) for y in range(j,j+3)]
if not self.isListValid(tmp):
return False
return True