原题
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
本文详细解析了LeetCode上一道经典题目——验证数独的有效性的算法实现。通过构造check函数来判断列表中数字是否有重复,进而检查数独的每一行、每一列以及每一个小九宫格是否符合数独规则,确保所有数字在同行、同列和同九宫格内不重复。
264

被折叠的 条评论
为什么被折叠?



