22 括號生成

2022-03-28 18:37:41 字數 457 閱讀 7834

題目:

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。

例如,給出 n = 3,生成結果為:

[ "((()))",

"(()())",

"(())()",

"()(())",

"()()()"]

分析:題目剛拿到的時候確實沒有思路,看了一下leetcode的題解,注意到最後方法三的閉合數解法。

這裡官方是採用了乙個遍歷回溯的思路,保證每乙個新增的集合都是有效的,如何保證有效呢?當然是左右對稱,那麼就可以得到如下的**:

public

static listgenerateparenthesis(int

n)

else}}

}return

result;

}

view code

22 括號生成

參考回溯法 1.class solution def init self self.ans list defgenerateparenthesis self,n int self.parenthesisiter n,0,return self.ans list defparenthesisiter ...

22 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 在leetcode中有關括號的題共有三道,除了這一道的另外兩道是valid parentheses 驗證括號和longest valid parentheses 最長有效括號,這...

22 括號生成

插空法對於乙個 可以把另乙個 插到它的任意乙個空位,形成新的組合。此處有3個空位,但插在頭部和尾部是重複的,所以要注意去重,可以用set class solution object def generateparenthesis self,n res set for i in range n 1 t...