Skip to content

Commit da14567

Browse files
Time: 54 ms (54.21%), Space: 17.1 MB (43.25%) - LeetHub
1 parent 3215d98 commit da14567

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

Diff for: 0051-n-queens/0051-n-queens.py

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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

0 commit comments

Comments
 (0)