- 括號生成 數字 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
當前狀態回溯完需要刪掉最後一個變成基準狀態,否則另外一種可能無法在基準狀態疊加。
這得多深的棧==