22 括號生成(C )

2021-09-25 21:37:48 字數 562 閱讀 3833

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

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

[「((()))」,

「(()())」,

「(())()」,

「()(())」,

「()()()」

]用了集合去重 和 dfs擴充套件。當 搜尋到n時,遇到』(』 之後在當前串插入乙個"()「就是其中乙個目標值,加上「()」+當前串、當前串加上」()" 就是所有可能值。這裡會存在重複的串,使用集合去重,n=1時,初始集合中僅有"()"。c++中的stl要熟練啊。

class solution 

new_set.insert("()" + (*i));

new_set.insert((*i) + "()");

} s.clear();

s = new_set; //擴充套件的集合

dfs(s, n); }}

vectorgenerateparenthesis(int n)

return res; }}

};

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...