1. 程式人生 > >leetcode 有效的數獨 Python

leetcode 有效的數獨 Python

判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。

  1. 數字 1-9 在每一行只能出現一次。
  2. 數字 1-9 在每一列只能出現一次。
  3. 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。

上圖是一個部分填充的有效的數獨。

數獨部分空格內已填入了數字,空白格用 '.' 表示。

示例 1:

輸入:
[
  ["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"]
]
輸出:
true

示例 2:

輸入:
[
  ["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"]
]
輸出:
false 解釋: 除了第一行的第一個數字從 5 改為 8 以外,空格內其他數字均與 示例1 相同。 但由於位於左上角的 3x3 宮內有兩個 8 存在, 因此這個數獨是無效的。

說明:

  • 一個有效的數獨(部分已被填充)不一定是可解的。
  • 只需要根據以上規則,驗證已經填入的數字是否有效即可。
  • 給定數獨序列只包含數字 1-9 和字元 '.' 。
  • 給定數獨永遠是 9x9 形式的。
class Solution:
    def isValidSudoku(self, board):
        """
        :type board: List[List[str]]
        :rtype: bool
        """
        s = set()
        for i in range(9):
            for j in range(9):
                if board[i][j] != '.' and board[i][j] in s:
                    return False
                else:
                    s.add(board[i][j])
            s.clear()
                    
            for k in range(9):
                if board[k][i] != '.' and board[k][i] in s:
                    return False
                else:
                    s.add(board[k][i])
            s.clear()
                    
        for i in range(0,9,3):
            for j in range(0,9,3):
                for k in range(i,i+3):
                    for p in range(j,j+3):
                        if board[k][p] != '.' and board[k][p] in s:
                            return False
                        else:
                            s.add(board[k][p])
                s.clear()
        return True
思路:逐行逐列逐塊判斷。

相關推薦

36.有效-Python-LeetCode

一、題目 二、解法 結語 一、題目 判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現

leetcode 有效 Python

判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1-9 在每一行只能出現一次。數字 1-9 在每一列只能出現一次。數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。上圖是一個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用 '.' 表示。示例

leetcode 36. 有效 (python)

判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1-9 在每一行只能出現一次。數字 1-9 在每一列只能出現一次。數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。上圖是一個部分填充的有效的數獨。數獨部分空格內已填入了

Leetcode演算法——36、判斷有效

判斷一個 9*9 的數獨面板是否是有效的。 如果已經被填充的數字滿足以下條件,則說明是有效的: 每一行只能包含無重複數字1-9 每一列只能包含無重複數字1-9 每一個 3*3 的子面板只能包含無重複數字1-9 備註: 一個有效的數獨面板(

每日一題 LeetCode 有效的數字 Python實現

字典 true false 如果 有效 solution code del append 有效的數字(簡單題) class Solution:def isValid(self, s):""":type s: str:rtype: bool&qu

leetcode之和 python

class Solution: def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] "

leetcode之和python

在編寫leecode上的演算法第一題“兩數之和”時,遇到了一些問題,如下: 1.引數丟失 >>>Solution.twosum([2,3,4,5],8) TypeError: twosum() missing 1 required positional

leetcode有效Python解答)

題目: 判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個

LeetCode題目--有效python/Java實現)

題目 判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以

swift 有效 - LeetCode

判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗實線分隔的&nbs

LeetCode 解題筆記——有效

題目描述:判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗實線分隔

leetcode-36-有效

bool isValidSudoku(vector<vector<char>>& board) { int row[9][9] = {0}, col[9][9] = {0}, box[9][9] = {0}; for (int i =

Leetcode題庫——36.有效

@author: ZZQ @software: PyCharm @file: leetcode36_isValidSudoku.py @time: 2018/11/19 19:27 要求:判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現

Leetcode 有效(c++) 清晰易懂

判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。 上圖是一個部分填充的有效的數獨。 數獨部分空格內

Leetcode演算法Java全解答--36. 有效

Leetcode演算法Java全解答–36. 有效的數獨 文章目錄 Leetcode演算法Java全解答--36. 有效的數獨 題目 想法 結果 總結 程式碼 我的答案 大佬們的答案

Leetcode 的強大之處  演算法題解 in Swift ( 有效 , 36 ) 及其 Code Review

Leetcode 的強大之處,挺多的。 本文寫的是,其強大的討論區。 討論區裡面,有各種具有啟發性的程式碼。 (換句話說,就是有很強的程式碼。看了,覺得腦洞大開,大神們把語言的語法特性發揮到了極致) 裡面有各種常見語言的實現 ( 這裡指 Leetcode 主站的, 中文站點的同一功能弱了一點 )

leetcode-有效

判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。 上圖是一個部分填充的有效的數獨。 數獨部分空格內已

Leetcode演算法題(C語言)11--有效

題目:有效的數獨 判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 1 數字 1-9 在每一行只能出現一次。 2 數字 1-9 在每一列只能出現一次。 3 數

LeetCode】36. 有效

題目描述 判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗

leetcode題庫——有效

題目描述: 判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。 上圖是一個部分填充的有