Files
LeetCode/Hard/sudoku-solver/Solution.java
Arkaprabha Chakraborty cef4c4dcc4 Initial commit
2022-07-26 16:15:18 +05:30

58 lines
1.3 KiB
Java

class Solution {
char[][] BOARD;
boolean isValid(int row, int col, char num) {
for (int i = 0; i < 9; i++) {
if (BOARD[i][col] == num)
return false;
if (BOARD[row][i] == num)
return false;
}
row = row - row % 3;
col = col - col % 3;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
if (BOARD[i + row][j + col] == num)
return false;
return true;
}
int[] nextEmpty() {
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
if (BOARD[i][j] == '.')
return new int[] { i, j };
return new int[] { -1, -1 };
}
boolean solver() {
int[] tmp = nextEmpty();
if (tmp[0] == -1)
return true;
int row = tmp[0];
int col = tmp[1];
for (int i = 1; i <= 9; i++) {
if (isValid(row, col, (char) (48 + i))) {
BOARD[row][col] = (char) (48 + i);
if (solver())
return true;
}
BOARD[row][col] = '.';
}
return false;
}
public void solveSudoku(char[][] board) {
BOARD = board;
solver();
}
}