zoukankan      html  css  js  c++  java
  • 36. Valid Sudoku

    Determine if a 9x9 Sudoku board is valid. Only the filled cells need to be validated according to the following rules:

    1. Each row must contain the digits 1-9 without repetition.
    2. Each column must contain the digits 1-9 without repetition.
    3. Each of the 9 3x3 sub-boxes of the grid must contain the digits 1-9 without repetition.

    avatag

    A partially filled sudoku which is valid.

    The Sudoku board could be partially filled, where empty cells are filled with the character '.'.

    Example 1:

    Input:
    [
    ["5","3",".",".","7",".",".",".","."],
    ["6",".",".","1","9","5",".",".","."],
    [".","9","8",".",".",".",".","6","."],
    ["8",".",".",".","6",".",".",".","3"],
    ["4",".",".","8",".","3",".",".","1"],
    ["7",".",".",".","2",".",".",".","6"],
    [".","6",".",".",".",".","2","8","."],
    [".",".",".","4","1","9",".",".","5"],
    [".",".",".",".","8",".",".","7","9"]
    ]
    Output: true

    Example 2:

    Input:
    [
    ["8","3",".",".","7",".",".",".","."],
    ["6",".",".","1","9","5",".",".","."],
    [".","9","8",".",".",".",".","6","."],
    ["8",".",".",".","6",".",".",".","3"],
    ["4",".",".","8",".","3",".",".","1"],
    ["7",".",".",".","2",".",".",".","6"],
    [".","6",".",".",".",".","2","8","."],
    [".",".",".","4","1","9",".",".","5"],
    [".",".",".",".","8",".",".","7","9"]
    ]
    Output: false
    Explanation: Same as Example 1, except with the 5 in the top left corner being
    modified to 8. Since there are two 8's in the top left 3x3 sub-box, it is invalid.

    Note:

    • A Sudoku board (partially filled) could be valid but is not necessarily solvable.
    • Only the filled cells need to be validated according to the mentioned rules.
    • The given board contain only digits 1-9 and the character '.'.
    • The given board size is always 9x9.
    class Solution:
        def isValidSudoku(self, board):
            """
            :type board: List[List[str]]
            :rtype: bool
            """
            def line():
                for i in range(9):
                    ans = [0 for _ in range(10)]
                    for j in range(9):
                        if board[i][j]=='.':
                            continue
                        ans[int(board[i][j])] += 1
                    for t in ans:
                        if t>1:
                            return False
                return True
            def coloum():
                for j in range(9):
                    ans = [0 for _ in range(10)]
                    for i in range(9):
                        if board[i][j]=='.':
                            continue
                        ans[int(board[i][j])] += 1
                    # print(j,'
    ',ans)
                    for t in ans:
                        if t>1:
                            return False
                return True
            def boxes(a,b,c,d):
                ans = [0 for _ in range(10)]
                for i in range(a,b):
                    for j in range(c,d):
                        if board[i][j]=='.':
                            continue
                        ans[int(board[i][j])] += 1
                for t in ans:
                    if t>1:
                        return False
                return True
            if line() and coloum() and boxes(0,3,0,3) and boxes(3,6,0,3) and boxes(6,9,0,3) and boxes(0,3,3,6) and boxes(3,6,3,6) and boxes(6,9,3,6) and boxes(0,3,6,9) and boxes(3,6,6,9) and boxes(6,9,6,9):
                return True
            return False
    
  • 相关阅读:
    ASP.NET Routing Debugger
    浏览器 CSS & JS Hack 手册
    基于vmWare5.5环境的VxWorks系统安装总结
    TFS 迁移到 Git
    关于websocket
    自定义单一模块Model类
    学习 C++的用途
    Navigation Controllers and Table Views(中)
    Mac环境下svn的使用
    减少.NET应用程序内存占用的一则实践
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9791920.html
Copyright © 2011-2022 走看看