leetcode 36 有效的數獨

2021-09-14 05:40:38 字數 1776 閱讀 1882

利用二重迴圈的下標來表示行、列和小正方形,減少不必要的資料儲存,每一次內迴圈都代表著對一行或是一列或是乙個小正方形的遍歷。外迴圈則代表對下一行,下一列和下乙個小正方形的遍歷。

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

數字1-9在每一行只能出現一次。

數字1-9在每一列只能出現一次。

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

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

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

輸入:

[ ["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

**:注意字典的鍵值對

class solution:

def isvalidsudoku(self, board):

""":type board: list[list[str]]

:rtype: bool

"""row = [{},{},{},{},{},{},{},{},{}] # 值:1

col = [{},{},{},{},{},{},{},{},{}]

cell = [{},{},{},{},{},{},{},{},{}]

n = len(board)

for i in range(n):

for j in range(n):

block = 3*(i//3)+j//3 # 找單元

num = board[i][j]

if num != '.':

if num not in row[i] and num not in col[j] and num not in cell[block]:

row[i][num] = 1

col[j][num] = 1

cell[block][num] = 1

else:

return false

# print(row)

# [, ,

# , ,

# , ,

# , ,

# ]return true

參考:

leetcode 36 vaild soduku(有效的數獨) python3 最簡**(單次迴圈)

leetcode 36. 有效的數獨 (python)

LeetCode 36 有效的數獨

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

LeetCode 36 有效的數獨

public boolean isvalidsudoku char board 檢查行 if isparticallyvalid board,i,i,0,8 檢查塊 for int i 0 i 3 i return true 把要檢查的值存入到set中,每次向set中新增值的時候,如果失敗則證明該值...

leetcode36 有效的數獨

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