题目
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
例子
输入:n = 3
输出:[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
深度优先遍历
做加法
有效的括号组合一定要左右括号数为n时,加入到队列中;
产生左分支的时候,只看当前是否还有左括号可以使用;
产生右分支时,剩余右括号数一定要小于左括号数。
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
results = []
def generate(left, right, n, s):
if left == n and right == n:
results.append(s)
return
if left < n:
generate(left+1, right, n, s+"(")
if right <left:
generate(left, right+1, n, s+")")
generate(0, 0, n, s="")
return results