Faaez Razeen

N Queens

  • 2 min read
  • LC-Hard
  • Backtracking

3 years ago

Solution

TimeSpaceExplanation
O()O()
def solveNQueens(self, n: int) -> List[List[str]]: col, pos_diag, neg_diag = set(), set(), set() board = [['.'] * n for _ in range(n)] ans = [] def backtrack(r): if r == n: copy = [''.join(row) for row in board] ans.append(copy) return for c in range(n): if c in col or (r + c) in pos_diag or (r - c) in neg_diag: continue col.add(c) pos_diag.add(r + c) neg_diag.add(r - c) board[r][c] = 'Q' backtrack(r + 1) col.remove(c) pos_diag.remove(r + c) neg_diag.remove(r - c) board[r][c] = '.' backtrack(0) return ans