原题
https://leetcode.com/problems/valid-sudoku/
解法
构造check函数, 检查列表中数字是否没有重复, 如果重复则返回False. 然后检查行, 列, sub, 构造对应的列表, 调用check函数进行检查.
代码
class Solution(object):
def isValidSudoku(self, board):
"""
:type board: List[List[str]]
:rtype: bool
"""
def check(l):
count = collections.Counter(l)
for char in count:
if char != '.' and count[char] > 1:
return False
return True
# check row
for row in board:
if check(row) == False:
return False
# check column
for c in range(9):
col = [board[r][c] for r in range(9)]
if check(col) == False:
return False
# check sub grid
for r in range(0,9,3):
for c in range(0,9,3):
sub = board[r][c:c+3] + board[r+1][c:c+3] + board[r+2][c:c+3]
if check(sub) == False:
return False
return True