class Solution:
def solveSudoku(self, board: List[List[str]]) -> None:
"""
Do not return anything, modify board in-place instead.
"""
def backtrace()-> bool:
for i in range(9):
for j in range(9):
if board[i][j] != ".":
continue
for k in range(1, 10, 1):
if self.isValied(i, j, str(k), board):
board[i][j] = str(k)
if(backtrace()):
return True
board[i][j] = "."
return False
return True
backtrace()
def isValied(self, row: int, col: int, val: str, board: List[List[str]]) -> bool:
for i in range(9):
if(board[row][i] == val):
return False
for j in range(9):
if(board[j][col] == val):
return False
startRow = (row // 3) * 3
startCol = (col // 3) * 3
for i in range(startRow, startRow+3, 1):
for j in range(startCol, startCol+3, 1):
if(board[i][j] == val):
return False
return True