LeetCode 36 有效的數獨

2021-09-25 08:39:38 字數 2142 閱讀 5449

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

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

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

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

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

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

說明:

這道題只是要求判斷是不是乙個有效的數獨,因此只需要按照數獨的條件判斷就行了。

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

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

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

判斷是否出現過,結合集合set更加好判斷。

當判斷以粗實線分隔的 3x3 格仔的時候,由於數獨整體總是9*9的,而實現分割的各個部分又是固定的,因此

可以每個3*3的格仔對應乙個set集合。對於每個點的橫縱座標都整除以3這樣就乙個的3*3格仔都對應了乙個

元素。 res[i//3][j//3],在res是乙個3*3的列表,每乙個元素是乙個set,對應乙個3*3格仔。

/:返回的是浮點數結果

//:整除,返回的是整數,數值上就是除法/結果的整數部分

python中的!不能用於 !true之類的,只能作為數值比較中的不等號,要對布林型變數取非的話需要用not,即not true 這類的才可以。

class solution:

def check_row(self,board): # 檢查行

for i in range(9):

map_c = set()

for j in range(9):

if board[i][j] == '.':

continue

elif board[i][j] not in map_c:

map_c.add(board[i][j])

elif board[i][j] in map_c:

return false

return true

def check_col(self,board): # 檢查列

for j in range(9):

map_c = set()

for i in range(9):

if board[i][j] == '.':

continue

elif board[i][j] not in map_c:

map_c.add(board[i][j])

elif board[i][j] in map_c:

return false

return true

def check_nine(self,board): # 檢查每個以粗實線分隔的 3x3 格仔

res=

for i in range(3):

for i in range(3):

for j in range(3):

for i in range(9):

for j in range(9):

if board[i][j] == '.':

continue

elif board[i][j] not in res[i//3][j//3]:

res[i//3][j//3].add(board[i][j])

elif board[i][j] in res[i//3][j//3]:

return false

return true

def isvalidsudoku(self, board: list[list[str]]) -> bool:

if not self.check_row(board):

return false

if not self.check_col(board):

return false

if not self.check_nine(board):

return false

return true

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...