class Solution:
def solveSudoku(self, board: List[List[str]]) -> None:
"""
Do not return anything, modify board in-place instead.
"""
def isValid(board, row, col, value):
# 判断行
for i in range(9):
if board[i][col] == value:
return False
# 判断列
for j in range(9):
if board[row][j] == value:
return False
# 判断小格子
start_i = (row//3) * 3
start_j = (col//3) * 3
for i in range(start_i, start_i + 3):
for j in range(start_j, start_j + 3):
if board[i][j] == value:
return False
return True
def dfs(board):
for i in range(len(board)):
for j in range(len(board[0])):
if board[i][j] != ".":
continue
for value in range(1,10):
if isValid(board, i, j, str(value)):
board[i][j] = str(value)
if dfs(board):
return True
board[i][j] = '.'
return False
return True
dfs(board)