You are given a partially completed 9x9 Sudoku grid where empty cells are marked with the character '.'. Fill every empty cell with a digit from '1' to '9' so that the finished grid is valid: each row must contain the digits 1 through 9 without repetition, each column must do the same, and each of the nine 3x3 sub-grids must also contain every digit exactly once.
Modify the grid in place so it holds a complete, valid solution. The puzzle is guaranteed to have exactly one solution, so you do not need to handle ambiguous or unsolvable inputs.
Example 1
Input: 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'] ]
Output: The same grid with every '.' replaced by a digit so that all rows, columns, and 3x3 blocks are valid.
Backtracking tries candidate digits for each blank cell and commits only to placements that keep the grid consistent, eventually producing the unique completed board.
Example 2
Input: board = [ ['.','.','9','7','4','8','.','.','.'], ['7','.','.','.','.','.','.','.','.'], ['.','2','.','1','.','9','.','.','.'], ['.','.','7','.','.','.','2','4','.'], ['.','6','4','.','1','.','5','9','.'], ['.','9','8','.','.','.','3','.','.'], ['.','.','.','8','.','3','.','2','.'], ['.','.','.','.','.','.','.','.','6'], ['.','.','.','2','7','5','9','.','.'] ]
Output: A fully filled 9x9 grid satisfying every row, column, and block constraint.
Each empty position is resolved by testing digits in order; whenever a partial assignment cannot lead to a solution, the search rewinds and tries the next digit.
Constraints
board.length == 9 and board[i].length == 9Each cell holds a digit from '1' to '9' or the placeholder '.'The input is guaranteed to have a single unique solutionSee the step-by-step animation, the intuition, and clean code in every language — free, no credit card.
FDE Coach is a cohort-based program in frontend, backend, AWS, and AI where you build real products and get referred to 200+ hiring partners. The free live workshop is the fastest way to see how we teach.
750+ engineers trained · frontend, backend, AWS & AI