判斷乙個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
思路:檢查每一行、每一列、每乙個3x3宮是否符合不存在重複值,若符合,則將該元素新增進去。
class
solution
:def
isvalidsudoku
(self, board)
:#沒有必要用dict,我們只關係某個數字有沒有出現過
row =[[
]for i in
range(9
)]col =[[
]for i in
range(9
)]cell =[[
]for i in
range(9
)]#enumerate()函式:用於將乙個可遍歷的資料物件
#(如列表、元組或字串)組合為乙個索引序列,
#同時列出資料索引和資料,一般用在for迴圈中。
for i, row in
enumerate
(board)
:for j, num in
enumerate
(row)
:if num !=
'.':
#3x3宮的確立
k =(i //3)
*3+ j //
3#拼接3個list
if num in row[i]
+ col[j]
+ cell[k]
:return
false
else
: row[i]
col[j]
cell[k]
return
true
LeetCode陣列 有效的數獨
有效的數獨 判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格...
有效的數獨
判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用 表示。示...
有效的數獨
題目 判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。說明上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用...