有效的数独Python解法
請你判斷一個?9 x 9 的數獨是否有效。只需要 根據以下規則 ,驗證已經填入的數字是否有效即可。
數字?1-9?在每一行只能出現一次。
數字?1-9?在每一列只能出現一次。
數字?1-9?在每一個以粗實線分隔的?3x3?宮內只能出現一次。(請參考示例圖)
?
注意:
一個有效的數獨(部分已被填充)不一定是可解的。
只需要根據以上規則,驗證已經填入的數字是否有效即可。
空白格用?'.'?表示。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-sudoku
?
例:
輸入:board =?
[["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(object):def isValidSudoku(self, board):""":type board: List[List[str]]:rtype: bool"""for i in range(0, 9): # 外圈遍歷row = [] # 行判斷數組col = [] # 列判斷數組block = [] # 塊判斷數組for j in range(0, 9): # 內圈遍歷if board[i][j] == '.' or board[i][j] not in row: # 行判斷row.append(board[i][j])else:return Falseif board[j][i] == '.' or board[j][i] not in col: # 列判斷col.append(board[j][i])else:return Falseblock_i = 3 * (i / 3) + j / 3 # 總行 = 大行加小行block_j = 3 * (i % 3) + j % 3 # 總列 = 大列加小列if board[block_i][block_j] == '.' or board[block_i][block_j] not in block: # 塊判斷block.append(board[block_i][block_j])else:return Falsereturn True? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
總結
以上是生活随笔為你收集整理的有效的数独Python解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 香港能用人民币消费吗 香港能花人民币吗
- 下一篇: 易金融是哪个借款平台 易金融是哪一家借款