zoukankan      html  css  js  c++  java
  • leetcode36 Valid Sudoku

     1 """
     2 Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:
     3     Each row must contain the digits 1-9 without repetition.
     4     Each column must contain the digits 1-9 without repetition.
     5     Each of the 9 3x3 sub-boxes of the grid must contain the digits 1-9 without repetition.
     6 A partially filled sudoku which is valid.
     7 The Sudoku board could be partially filled, where empty cells are filled with the character '.'.
     8 Example 1:
     9 Input:
    10 [
    11   ["5","3",".",".","7",".",".",".","."],
    12   ["6",".",".","1","9","5",".",".","."],
    13   [".","9","8",".",".",".",".","6","."],
    14   ["8",".",".",".","6",".",".",".","3"],
    15   ["4",".",".","8",".","3",".",".","1"],
    16   ["7",".",".",".","2",".",".",".","6"],
    17   [".","6",".",".",".",".","2","8","."],
    18   [".",".",".","4","1","9",".",".","5"],
    19   [".",".",".",".","8",".",".","7","9"]
    20 ]
    21 Output: true
    22 Example 2:
    23 Input:
    24 [
    25   ["8","3",".",".","7",".",".",".","."],
    26   ["6",".",".","1","9","5",".",".","."],
    27   [".","9","8",".",".",".",".","6","."],
    28   ["8",".",".",".","6",".",".",".","3"],
    29   ["4",".",".","8",".","3",".",".","1"],
    30   ["7",".",".",".","2",".",".",".","6"],
    31   [".","6",".",".",".",".","2","8","."],
    32   [".",".",".","4","1","9",".",".","5"],
    33   [".",".",".",".","8",".",".","7","9"]
    34 ]
    35 Output: false
    36 Explanation: Same as Example 1, except with the 5 in the top left corner being
    37     modified to 8. Since there are two 8's in the top left 3x3 sub-box, it is invalid.
    38 """
    39 """
    40 很考验python功底的一道题
    41 """
    42 class Solution:
    43     def isValidSudoku(self, board):
    44         for num1 in board:
    45             if not self.isRep(num1):
    46                 return False
    47         for col in zip(*board):  # !!!矩阵的转置
    48             if not self.isRep(col):
    49                 return False
    50         for i in (0, 3, 6):
    51             for j in (0, 3, 6):
    52                 square = [board[x][y] for x in range(i, i + 3) for y in range(j, j + 3)]
    53                 if not self.isRep(square):
    54                     return False
    55         return True
    56 
    57     def isRep(self, unit):
    58         unit = [i for i in unit if i != '.']
    59         return len(set(unit)) == len(unit)  # !!!判断数组中有无重复值得方法。set
  • 相关阅读:
    java标识符的作用和命名规则
    Java还是编程语言中的老大?凭什么长期霸占第一宝座?
    JavaScript基础内容中的函数详解
    SpringMVC配置文件 中 mvcview-controller 标签的使用
    说说JVM原理?内存泄漏与溢出的区别?何时产生内存泄漏?
    SpringMVC和Spring的配置文件扫描包详解
    Mybatis配置详解
    关于Redis的常见面试题解析
    jQuery杂谈一
    LeetCode-212 单词搜索 II
  • 原文地址:https://www.cnblogs.com/yawenw/p/12485189.html
Copyright © 2011-2022 走看看