[leetcode] 36. Valid Sudoku @ python

版权声明:版权归个人所有,未经博主允许,禁止转载 https://blog.csdn.net/danspace1/article/details/86635870

原题

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

猜你喜欢

转载自blog.csdn.net/danspace1/article/details/86635870