Leetcode题库——36.有效的数独


@author: ZZQ
@software: PyCharm
@file: leetcode36_isValidSudoku.py
@time: 2018/11/19 19:27
要求:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

思路: 纯暴力解决。

class Solution():
    def __init__(self):
        pass

    def isValidSudoku(self, board):
        """
        :type board: List[List[str]]
        :rtype: bool
        """
        row_list = [0] * 9
        col_list = [0] * 9
        for i in range(9):
            for j in range(9):
                if board[i][j] != '.':
                    if col_list[int(board[i][j])-1] == 0:
                        col_list[int(board[i][j])-1] = 1
                    else:
                        return False
                if board[j][i] != '.':
                    if row_list[int(board[j][i])-1] == 0:
                        row_list[int(board[j][i])-1] = 1
                    else:
                        return False
            row_list = [0] * 9
            col_list = [0] * 9
        rect_list = [0] * 9
        for k in range(3):
            for t in range(3):
                for i in range(3):
                    for j in range(3):
                            if board[k*3 + i][t*3 + j] != '.':
                                if rect_list[int(board[k*3 + i][t*3 + j])-1] == 0:
                                    rect_list[int(board[k*3 + i][t*3 + j])-1] = 1
                                else:
                                    return False
                rect_list = [0] * 9
        return True
原文地址:https://www.cnblogs.com/zzq-123456/p/9985186.html