File tree 1 file changed +38
-0
lines changed
1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def solveNQueens (self , n : int ) -> List [List [str ]]:
3
+ # file=column, rank=row, empty/non-empty cell=square
4
+ columns = set ()
5
+ upward_diagonal = set () # row+column
6
+ downward_diagonal = set () # row-column
7
+ board = [["." ] * n for square in range (n )]
8
+ result = []
9
+
10
+ def backtrack (row ):
11
+ # Base Case
12
+ if row == n :
13
+ board_snap = ["" .join (row ) for row in board ]
14
+ result .append (board_snap )
15
+ return
16
+
17
+ # Recursive Case
18
+ for column in range (n ):
19
+ if column in columns or (row + column ) in upward_diagonal or (row - column ) in downward_diagonal :
20
+ continue
21
+
22
+ # update for recursive call
23
+ columns .add (column )
24
+ upward_diagonal .add (row + column )
25
+ downward_diagonal .add (row - column )
26
+ board [row ][column ] = "Q"
27
+
28
+ backtrack (row + 1 )
29
+
30
+ # clear before next recursion
31
+ columns .remove (column )
32
+ upward_diagonal .remove (row + column )
33
+ downward_diagonal .remove (row - column )
34
+ board [row ][column ] = "."
35
+
36
+ backtrack (0 )
37
+
38
+ return result
You can’t perform that action at this time.
0 commit comments