Input: n = 3
Output: ["((()))","(()())","(())()","()(())","()()()"]
Input: n = 1
Output: ["()"]
n = 2
def backtracking(output, chars_list, open):
if len(chars_list) == n * 2:
if open == 0:
output.append("".join(chars_list))
return
if open < n:
chars_list.append("(")
open += 1
backtracking(output, chars_list, open)
open -= 1
chars_list.pop(-1)
if open > 0:
chars_list.append(")")
open -= 1
backtracking(output, chars_list, open)
open += 1
chars_list.pop(-1)
def main():
output = []
backtracking(output, [], 0)
print(output)
def generateParenthesis(self, n: int) -> List[str]:
res=[]
stack=[]
def backtrack(opened, closed):
if opened==closed==n:
res.append("".join(stack))
return
if opened< n:
stack.append("(")
backtrack(opened+1, closed)
stack.pop()
if closed < opened:
stack.append(")")
backtrack(opened, closed+1)
stack.pop()
backtrack(0,0)
return res
"""
atlantic_ocean_map = [["0", "1", "1", "0", "0"],
["1", "1", "1", "0", "0"],
["0", "1", "0", "0", "0"],] # 1 island
pacific_ocean_map = [["0", "1", "1", "0", "0"],
["1", "0", "0", "0", "0"],
["0", "1", "1", "0", "0"],] # 3 islands
"""
def NunberIsland(map_a):
island= 0
vistited= set()
rows, cols= len(map_a), len(map_a[0])
def dfs(r,c):
if (r < 0 or r >= rows
or c not in range(cols)
or map_a[r][c]== "0"
or (r,c) in visited):
return
visited.add((r,c))
directions= [(1,0),[-1,0],[0,1],[0,-1]]
for dr, dc in directions:
dfs(r+dir[0], c+dir[1])
for r in range(rows):
for c in range(cols):
if map_a[r][c]=="1" and (r,c) not in visited:
island+=1
dfs(r,c)
return island
depedencies = {"A": ["B", "C"],
"B": ["D"],
"C": ["B"],}
output = ["D", "B", "C", "A"]
output = ["D", "B", "A", "C"]
topological sort
how to detect cycles?
how to find where's the cycle?
str= "bloomberg"
duplicates = set()
dic={
"l": 1
}
duplicates.add("b")
O(n)
is it a valid bst tree