N Queens (Leetcode 51)

Problem Link: https://leetcode.com/problems/n-queens/

class Solution:
    def solveNQueens(self, n: int) -> List[List[str]]:
        
        ans=[]
        board=[["." for i in range(n)] for j in range(n)]
        # Watch Neetcode's video for this
        
        col=set()
        posDiag=set() # r+c
        negDiag=set() # r-c
        
        def recursion(r,n):
            
            if(r==n):
                copy=[]
                
                for i in range(n):
                    temp=""
                    for j in range(n):
                        temp=temp+board[i][j]
                    copy.append(temp)
                    
                ans.append(copy)
                return
            
            for j in range(n):
                
                # Unsafe place
                if(j in col or r+j in posDiag or r-j in negDiag):
                    continue
                
                # Safe place
                else:
                    col.add(j)
                    posDiag.add(r+j)
                    negDiag.add(r-j)
                    board[r][j]="Q"
                    
                    recursion(r+1,n)
                    
                    col.remove(j)
                    posDiag.remove(r+j)
                    negDiag.remove(r-j)
                    board[r][j]="."
        
        recursion(0,n)
        return ans

Last updated