37. Sudoku Solver

https://leetcode.com/problems/sudoku-solver/

Borrow the idea of sudoku valid from 36

Backtracking

class Solution:
    def solveSudoku(self, board: List[List[str]]) -> None:
        """
        Do not return anything, modify board in-place instead.
        """
        def isValidSudoku(board,row,col,c):
            for j in range(9):
                if board[row][j] != ".":
                    if board[row][j] == c:
                        return False
                if board[j][col] != ".":
                    if board[j][col] == c:
                        return False
                currCube = board[row//3 * 3 + j//3][col//3 * 3 + j % 3]
                if currCube != ".":
                    if currCube == c:
                        return False
            return True
        def solve(board):
            for i in range(9):
                for j in range(9):
                    if board[i][j] == ".":
                        for c in range(1,10):
                            if isValidSudoku(board,i,j,str(c)):
                                board[i][j] = str(c)
                                if solve(board):
                                    return True
                                else:
                                    board[i][j] = "."
                        return False
            return True
        solve(board)
        return
        

Last updated

Was this helpful?