数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"
回溯剪枝条件:
保证左括号>=右括号,并且不超过左括号和右括号都不超过n
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ans=[]
def dfs(s,L,R):
if L<R or L>n or R>n:#保证左括号>=右括号,并且不超过n
return
if L==n and R==n:
ans.append(str(s))
return
#左括号
dfs(s+"(",L+1,R)
#右括号
dfs(s+")",L,R+1)
dfs("",0,0)
return ans