判斷乙個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
輸入:
[ ["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 存在, 因此這個數獨是無效的。
class
solution
:def
isvalidsudoku
(self, board: list[list[
str]])
->
bool
: rows =
[for i in
range(9
)]cols =
[for i in
range(9
)]boxes =
[for i in
range(9
)]for i in
range(9
):for j in
range(9
):num = board[i]
[j]if num !=
'.':
box_index =
(i //3)
*3+ j //
3 rows[i]
[num]
= rows[i]
.get(num,0)
+1cols[j]
[num]
= cols[j]
.get(num,0)
+1boxes[box_index]
[num]
= boxes[box_index]
.get(num,0)
+1if rows[i]
[num]
>
1or cols[j]
[num]
>
1or boxes[box_index]
[num]
>1:
return
false
return
true
36 有效數獨
判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。對於每乙個遍歷到的當前元素,需要知道該元素是否之前已在該行,該列,該小方陣裡出...
36 有效的數獨
判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用 表示。示...
36 有效的數獨
判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可 數字1 9在每一行只能出現一次。數字1 9在每一列只能出現一次。數字1 9在每乙個以粗實線分隔的3x3宮內只能出現一次 數獨部分空格內已填入了數字,空白格用 表示。方法一 一遍遍歷 思路 時間複雜度o 1 空間複雜...