52. N-Queens II Leetcode Python

Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.

this problem is slightly different from prior one. Here we just need to update with counting number.

we can define a self.count in the __init__ so that we can update it every time when the depth==n.

the time complexity is still exponential

and the space complexity is O(n)

Here is the code.

class Solution:
    # @return an integer
    def __init__(self):
        self.count=0
    def totalNQueens(self, n):
        def check(k,j):
            for i in range(k):
                if board[i]==j or abs(k-i)==abs(board[i]-j):
                    return False
            return True
        def dfs(depth):
            if depth==n:
                self.count+=1
                return
            for i in range(n):
                if check(depth,i):
                    board[depth]=i
                    s='.'*n
                    dfs(depth+1)
        board=[-1 for i in range(n)]
        dfs(0)
        return self.count





你可能感兴趣的:(LeetCode,python,DFS)