Skip to content

Commit

Permalink
solution(java): 37. Sudoku Solver
Browse files Browse the repository at this point in the history
37. Sudoku Solver
- Java
  • Loading branch information
godkingjay authored Oct 31, 2023
2 parents ea87ae6 + 84a86f3 commit c8f0c86
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 0 deletions.
36 changes: 36 additions & 0 deletions Hard/37.Sudoku Solver/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# LeetCode 37.Sudoku Solver

## Problem Description

Write a program to solve a Sudoku puzzle by filling the empty cells.

A sudoku solution must satisfy all of the following rules:

Each of the digits `1-9` must occur exactly once in each row.
Each of the digits `1-9` must occur exactly once in each column.
Each of the digits `1-9` must occur exactly once in each of the 9 `3x3` sub-boxes of the grid.
The `'.'` character indicates empty cells.

**Example 1:**

![Screenshot 2023-10-31 004422](https://github.com/Bharathlax-2005/LeetCode-3/assets/116173614/b6c6ff39-513d-4295-9b52-90c1a1f5c2c4)


**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:** [["5","3","4","6","7","8","9","1","2"],["6","7","2","1","9","5","3","4","8"],["1","9","8","3","4","2","5","6","7"],["8","5","9","7","6","1","4","2","3"],["4","2","6","8","5","3","7","9","1"],["7","1","3","9","2","4","8","5","6"],["9","6","1","5","3","7","2","8","4"],["2","8","7","4","1","9","6","3","5"],["3","4","5","2","8","6","1","7","9"]]
**Explanation:** The input board is shown above and the only valid solution is shown below:


![Screenshot 2023-10-31 004607](https://github.com/Bharathlax-2005/LeetCode-3/assets/116173614/ab9cd35f-eed8-45ca-b511-0a88fb7bfd25)


**Constraints:**

- `board.length == 9`
- `board[i].length == 9`
- `board[i][j]` is a digit or `'.'`.
- It is guaranteed that the input board has only one solution.
-
### Link

https://leetcode.com/problems/sudoku-solver/
35 changes: 35 additions & 0 deletions Hard/37.Sudoku Solver/Sol3.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
class Solution {
public void solveSudoku(char[][] board) {
solve(board);
}

private boolean solve(char[][] board) {
for (int row = 0; row < 9; row++) {
for (int col = 0; col < 9; col++) {
if (board[row][col] == '.') {
for (char c = '1'; c <= '9'; c++) {
if (isValid(board, row, col, c)) {
board[row][col] = c;
if (solve(board)) {
return true;
}
board[row][col] = '.'; // Backtrack
}
}
return false;
}
}
}
return true;
}

private boolean isValid(char[][] board, int row, int col, char c) {
for (int i = 0; i < 9; i++) {
if (board[row][i] == c || board[i][col] == c || board[3 * (row / 3) + i / 3][3 * (col / 3) + i % 3] == c) {
return false;
}
}
return true;
}
}

0 comments on commit c8f0c86

Please sign in to comment.