LC051 - N-Queens
Problem
Example
Solution
def solveNQueens(self, n: int) -> List[List[str]]:
# use sets to track filled spots, cols and diagonals (pos and neg)
cols = set()
pos, neg = set(), set()
board = [["."] * n for i in range(n)]
res = []
def backtrack(row):
if row == n:
temp = []
for row in board:
temp.append("".join(row))
res.append(temp)
return
for col in range(n):
if col in cols or (row + col) in pos or (row - col) in neg:
continue
cols.add(col)
pos.add(row + col)
neg.add(row - col)
board[row][col] = "Q"
backtrack(row + 1)
# remove to backtrack for other sols
cols.remove(col)
pos.remove(row + col)
neg.remove(row - col)
board[row][col] = "."
backtrack(0)
return resLast updated