case1:列舉所有可能,並加以檢驗
時間複雜度o(2^2n),空間複雜度o(2 ^2n)
class solution
generateall(n,new stringbuilder());
return res;
}}
//case2:
/**dp思想:要求n對括號所有有效的組合f(n),可以這樣做:
令f(n)="("f(q)")"+f(p) [其中p+q=n-1]也就是其中f(q)+f(p) = 前n-1對括號的組合情況,第n對括號我們選擇它作為最終組合最左邊的那個配對括號,所以剩下的(n-1)對括號要不在第n對括號的裡面,要不在其右邊就這兩種情況(不可能在其左邊)
而且f(q),f(p)的情況在計算f(n)之前我們就會先計算出來(不斷利用先前的結果來計算後來的情況),這也是我們上述公式的**.
*/class solution2 }}
result.add(temp);
}return result.get(n);
} }}
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...