Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions nqueens.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
def solveNQueens(self, n: int) -> List[List[str]]:
self.result=[]
board=[[False]*n for _ in range(n)]
self.helper(board,0,n)
return self.result

def helper(self,board,row,n):
if row==n:
list_=[]
for i in range(n):
sb=[]
for j in range(n):
if board[i][j]:
sb.append("Q")
else:
sb.append(".")
list_.append("".join(sb))
self.result.append(list_)
return
for j in range(n):
if self.issafe(board,row,j,n):
board[row][j]=True
self.helper(board,row+1,n)
board[row][j]=False

def issafe(self,board,i,j,n):
r=i
c=j
while r>=0:
if board[r][c]:
return False
r-=1
r=i
c=j
while r>=0 and c>=0:
if board[r][c]:
return False
r-=1
c-=1
r=i
c=j
while r>=0 and c<n:
if board[r][c]:
return False
r-=1
c+=1
return True



28 changes: 28 additions & 0 deletions word_search.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
def exist(self, board: List[List[str]], word: str) -> bool:
self.dirs=[[-1,0],[0,-1],[0,1],[1,0]]
self.m=len(board)
self.n=len(board[0])

for i in range(self.m):
for j in range(self.n):
if self.dfs(board,i,j,word,0):
return True
return False

def dfs(self,board,i,j,word,idx):
if idx==len(word):
return True
if i<0 or j<0 or i>=self.m or j>=self.n or board[i][j]=='#':
return False
if word[idx]!= board[i][j]:
return False
board[i][j]='#'

for dir in self.dirs:
r=dir[0]+i
c=dir[1]+j

if self.dfs(board,r,c,word,idx+1):
return True
board[i][j]=word[idx]
return False