From 26d341947afd31e178fc4d966f121366ef1b7133 Mon Sep 17 00:00:00 2001 From: Adithya Vinayak Date: Sat, 14 Mar 2026 17:45:09 -0400 Subject: [PATCH] working solution --- problem1.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++ problem2.py | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 problem1.py create mode 100644 problem2.py diff --git a/problem1.py b/problem1.py new file mode 100644 index 00000000..7a4832f8 --- /dev/null +++ b/problem1.py @@ -0,0 +1,54 @@ +# problem 1 + +# https://leetcode.com/problems/n-queens/ + +class Solution: + + def helper(self,row,n): + if row == n: + total_arr = [] + for i in range(n): + row_arr = [] + for j in range(n): + if self.board[i][j]: + row_arr.append('Q') + else: + row_arr.append('.') + total_arr.append(''.join(row_arr)) + self.final_arr.append(total_arr) + return + for j in range(n): + if self.isValid(row,j,n): + self.board[row][j] = True + self.helper(row+1,n) + self.board[row][j] = False + + # check top, left diagonal, right diagonal + def isValid(self,i,j,n): + r = i + c = j + while r >= 0: + if self.board[r][c]: + return False + r-=1 + r = i + c = j + while r >= 0 and c >= 0: + if self.board[r][c]: + return False + r-=1 + c-=1 + r = i + c = j + while r >= 0 and c < n: + if self.board[r][c]: + return False + r-=1 + c+=1 + return True + + def solveNQueens(self, n: int) -> List[List[str]]: + self.final_arr = [] + self.board = [[False]*n for _ in range(n)] + self.helper(0,n) + return self.final_arr \ No newline at end of file diff --git a/problem2.py b/problem2.py new file mode 100644 index 00000000..ff41c73e --- /dev/null +++ b/problem2.py @@ -0,0 +1,33 @@ +# problem 2 + +#https://leetcode.com/problems/word-search/ + +class Solution: + def exist(self, board: List[List[str]], word: str) -> bool: + self.m = len(board) + self.n = len(board[0]) + self.word = word + for i in range(self.m): + for j in range(self.n): + if self.helper(board,i,j,0): + return True + return False + + + + def helper(self,board,i,j,idx): + if idx == len(self.word): + return True + if i<0 or j <0 or i>=self.m or j>=self.n or board[i][j] == '#': + return False + if self.word[idx] != board[i][j]: + return False + dirs = [[-1,0],[0,-1],[1,0],[0,1]] + board[i][j] = '#' + for dir_s in dirs: + r = dir_s[0] + i + c = dir_s[1] + j + if self.helper(board,r,c,idx+1): + return True + board[i][j] = self.word[idx] + return False \ No newline at end of file