Hard
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 the number of distinct solutions to the n-queens puzzle.
Example 1:
Input: n = 4
Output: 2
Explanation: There are two distinct solutions to the 4-queens puzzle as shown.
Example 2:
Input: n = 1
Output: 1
Constraints:
1 <= n <= 9
class Solution:
def totalNQueens(self, n: int) -> int:
row = [False] * n
col = [False] * n
diagonal = [False] * (2 * n - 1)
antiDiagonal = [False] * (2 * n - 1)
return self._totalNQueens(n, 0, row, col, diagonal, antiDiagonal)
def _totalNQueens(self, n, r, row, col, diagonal, antiDiagonal):
if r == n:
return 1
count = 0
for c in range(n):
if not row[r] and not col[c] and not diagonal[r + c] and not antiDiagonal[r - c + n - 1]:
row[r] = col[c] = diagonal[r + c] = antiDiagonal[r - c + n - 1] = True
count += self._totalNQueens(n, r + 1, row, col, diagonal, antiDiagonal)
row[r] = col[c] = diagonal[r + c] = antiDiagonal[r - c + n - 1] = False
return count