Skip to content

Commit 3695783

Browse files
authored
添加 0037.解数独 python3版本
添加 0037.解数独 python3版本
1 parent ff2ec86 commit 3695783

File tree

1 file changed

+33
-1
lines changed

1 file changed

+33
-1
lines changed

problems/0037.解数独.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,39 @@ class Solution {
287287
```
288288

289289
Python:
290-
290+
```python3
291+
class Solution:
292+
def solveSudoku(self, board: List[List[str]]) -> None:
293+
"""
294+
Do not return anything, modify board in-place instead.
295+
"""
296+
def backtrack(board):
297+
for i in range(len(board)): #遍历行
298+
for j in range(len(board[0])): #遍历列
299+
if board[i][j] != ".": continue
300+
for k in range(1,10): #(i, j) 这个位置放k是否合适
301+
if isValid(i,j,k,board):
302+
board[i][j] = str(k) #放置k
303+
if backtrack(board): return True #如果找到合适一组立刻返回
304+
board[i][j] = "." #回溯,撤销k
305+
return False #9个数都试完了,都不行,那么就返回false
306+
return True #遍历完没有返回false,说明找到了合适棋盘位置了
307+
def isValid(row,col,val,board):
308+
for i in range(9): #判断行里是否重复
309+
if board[row][i] == str(val):
310+
return False
311+
for j in range(9): #判断列里是否重复
312+
if board[j][col] == str(val):
313+
return False
314+
startRow = (row // 3) * 3
315+
startcol = (col // 3) * 3
316+
for i in range(startRow,startRow + 3): #判断9方格里是否重复
317+
for j in range(startcol,startcol + 3):
318+
if board[i][j] == str(val):
319+
return False
320+
return True
321+
backtrack(board)
322+
```
291323

292324
Go:
293325

0 commit comments

Comments
 (0)