- 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例:
输入:n = 3
输出:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
这道题的简单于思路,难于写,利用单向思维,我们的每个问题就是,当前状态我们能加“(”还是”)“,然后不断地去遍历可能性,直到所有的“(”和”)“被用完(这里是3)
那么代码如下:
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
a=""
end=[]
left=n
right=n
def check(a,c,v):
if(len(a)>=2*n):
if(a not in end):
end.append(a)
return
if(c>0):
a=a+"("
check(a,c-1,v)
a=a[:-1]
if(a!=""):
if(c<v):
a=a+")"
check(a,c,v-1)
a=a[:-1]
check(a,left,right)
return end
当前状态回溯完需要删掉最后一个变成基准状态,否则另外一种可能无法在基准状态叠加。
这得多深的栈==