有效的数独Python解法
請(qǐng)你判斷一個(gè)?9 x 9 的數(shù)獨(dú)是否有效。只需要 根據(jù)以下規(guī)則 ,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可。
數(shù)字?1-9?在每一行只能出現(xiàn)一次。
數(shù)字?1-9?在每一列只能出現(xiàn)一次。
數(shù)字?1-9?在每一個(gè)以粗實(shí)線分隔的?3x3?宮內(nèi)只能出現(xiàn)一次。(請(qǐng)參考示例圖)
?
注意:
一個(gè)有效的數(shù)獨(dú)(部分已被填充)不一定是可解的。
只需要根據(jù)以上規(guī)則,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可。
空白格用?'.'?表示。
來(lái)源:力扣(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
解析:
按題目要求分三個(gè)部分判斷,分別為行,列和塊即可。
class Solution(object):def isValidSudoku(self, board):""":type board: List[List[str]]:rtype: bool"""for i in range(0, 9): # 外圈遍歷row = [] # 行判斷數(shù)組col = [] # 列判斷數(shù)組block = [] # 塊判斷數(shù)組for j in range(0, 9): # 內(nèi)圈遍歷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? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
總結(jié)
以上是生活随笔為你收集整理的有效的数独Python解法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 香港能用人民币消费吗 香港能花人民币吗
- 下一篇: 外观数列Python解法