@@ -2,46 +2,48 @@ class Solution {
2
2
List<List<String>> result;
3
3
public List<List<String>> solveNQueens(int n) {
4
4
result = new ArrayList<>();
5
- //Take a board. .Q
6
5
char[][] board = new char[n][n];
7
- for(int i =0; i < n; i++) {
6
+
7
+ //Filled it as empty cells
8
+ for(int i = 0; i < n; i++){
8
9
for(int j = 0; j < n; j++) {
9
10
board[i][j] = '.';
10
11
}
11
12
}
12
- List<int[]> queenPos = new ArrayList<>();
13
- dfs(board, 0, queenPos);
13
+
14
+ List<int[]> queens = new ArrayList<>();
15
+ dfs(board, 0, queens);
14
16
return result;
15
17
}
16
18
17
- private void dfs(char[][] board, int row , List<int[]> queenPos ) {
18
- //Chaeck if we have placed all the queens
19
- if(queenPos .size() == board.length) {
20
- //Construct the result
21
- List<String> rowData = new ArrayList<>();
22
- for(char[] c : board){
23
- rowData .add(new String(c ));
19
+ private void dfs(char[][] board, int r , List<int[]> queens ) {
20
+ //Check if all queens are placed
21
+ if(queens .size() == board.length) {
22
+ //Construct output
23
+ List<String> rows = new ArrayList<>();
24
+ for(char[] row : board) {
25
+ rows .add(new String(row ));
24
26
}
25
- result.add(rowData );
27
+ result.add(rows );
26
28
}
27
29
28
- //Try adduing Queen at row, col
29
- for(int col = 0; col < board.length; col ++) {
30
- if(canAddQueen(queenPos, row, col )) {
31
- board[row][col ] = 'Q';
32
- queenPos .add(new int[]{row, col });
33
- dfs(board, row +1, queenPos );
34
- board[row][col ] = '.';
35
- queenPos .remove(queenPos .size()-1);
30
+ //Try adding the queen
31
+ for(int c = 0; c < board.length; c ++) {
32
+ if(canAddQueen(r,c,queens )) {
33
+ board[r][c ] = 'Q';
34
+ queens .add(new int[]{r,c });
35
+ dfs(board, r +1, queens );
36
+ board[r][c ] = '.';
37
+ queens .remove(queens .size()-1);
36
38
}
37
39
}
38
40
}
39
41
40
- private boolean canAddQueen(List< int[]> queenPos , int row, int col ) {
41
- for(int[] pair : queenPos ) {
42
- int dx = Math.abs(pair [0]- row );
43
- int dy = Math.abs(pair [1]- col );
44
- if(dx==0 || dy == 0 || dx == dy) return false;
42
+ private boolean canAddQueen(int r , int c, List< int[]> queens ) {
43
+ for(int[] q : queens ) {
44
+ int dx = Math.abs(r-q [0]);
45
+ int dy = Math.abs(c-q [1]);
46
+ if(dx==0 || dy== 0 || dx== dy) return false;
45
47
}
46
48
return true;
47
49
}
0 commit comments