Leetcode52. N-Queens II

class Solution:
    def totalNQueens(self, n: int) -> int:
        if n<1:
            return 0
        if n==1:
            return 1
        
        self.count = 0
        queens = list(range(0,n))
        self.permutation(queens,0)
        return self.count
        
    def permutation(self,queens,index):
        if index==len(queens)-1:
            if self.isValid(queens):
                self.count+=1
            return
        
        for i in range(index,len(queens)):
            self.swap(queens,i,index)
            self.permutation(queens,index+1)
            self.swap(queens,i,index)
        
    def swap(self,aList,i,j):
        temp = aList[i]
        aList[i] = aList[j]
        aList[j] = temp
        
    def isValid(self,queens):
        for i in range(len(queens)):
            for j in range(i+1,len(queens)):
                if abs(i-j)==abs(queens[i]-queens[j]):
                    return False
        return True

Runtime: 1288 ms, faster than 5.10% of Python3 online submissions for N-Queens II.
Memory Usage: 13.3 MB, less than 5.88% of Python3 online submissions for N-Queens II.

posted @ 2019-03-22 19:15  大胖子球花  阅读(76)  评论(0)    收藏  举报