The n-queens puzzle is the problem of placing n
queens on an n x n
chessboard such that no two queens attack each other.
Given an integer n
, return all distinct solutions to the n-queens puzzle. You may return the answer in any order.
Each solution contains a distinct board configuration of the n-queens' placement, where 'Q'
and '.'
both indicate a queen and an empty space, respectively.
Example 1:
Input: n = 4
Output: [[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]
Explanation: There exist two distinct solutions to the 4-queens puzzle as shown above
Example 2:
Input: n = 1
Output: [["Q"]]
Constraints:
-
1 <= n <= 9
SOLUTION:
class Solution:
def getAllPos(self, usedCols, usedPosDiag, usedNegDiag, i, n):
if i >= n:
return [[]]
op = []
for j in range(n):
if j not in usedCols and (i + j) not in usedPosDiag and (i - j) not in usedNegDiag:
val = self.getAllPos(usedCols.union({j}), usedPosDiag.union({i + j}), usedNegDiag.union({i - j}), i + 1, n)
op += [[j] + v for v in val]
return op
def getRow(self, i, n):
val = ["."] * n
val[i] = "Q"
return "".join(val)
def solveNQueens(self, n: int) -> List[List[str]]:
queens = self.getAllPos(set(), set(), set(), 0, n)
return [[self.getRow(i, n) for i in q] for q in queens]
Top comments (0)