LeetCode刷题(7)

来源:互联网 发布:js正则验证身份证号码 编辑:程序博客网 时间:2024/06/08 08:13

判断是否是有效的数独有三点,行不重复,列不重复,每个3x3矩阵不重复
今日事多,参考一个讨论,致谢!
class Solution(object):
def isValidSudoku(self, board):
“””
:type board: List[List[str]]
:rtype: bool
“””
return (self.is_row_valid(board) and
self.is_col_valid(board) and
self.is_square_valid(board))

def is_row_valid(self, board):    for row in board:        if not self.is_unit_valid(row):            return False    return Truedef is_col_valid(self, board):    for col in zip(*board):        if not self.is_unit_valid(col):            return False    return Truedef is_square_valid(self, board):    for i in (0, 3, 6):        for j in (0, 3, 6):            square = [board[x][y] for x in range(i, i + 3) for y in range(j, j + 3)]            if not self.is_unit_valid(square):                return False    return Truedef is_unit_valid(self, unit):    unit = [i for i in unit if i != '.']    return len(set(unit)) == len(unit)

zip()行列互换
set()去重

原创粉丝点击