數字 n 代表生成括號的對數,請你設計乙個函式,用於能夠生成所有可能的並且 有效的 括號組合。
示例 1:
輸入:n = 3
輸出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
輸入:n = 1
輸出:["()"]
用深度優先遍歷,當左右括號大於0時,產生左括號。
產生左括號時要判斷是否還有左括號剩餘。
當左括號大於右括號時才可以產生右括號。
左右括號數量為0時結束。
from typing import list
class
solution
:def
generateparenthesis
(self, n:
int)
-> list[
str]
: res =
cur_str =
''def
dfs(cur_str, left, right)
:"""
:param cur_str: 從根結點到葉子結點的路徑字串
:param left: 左括號還可以使用的個數
:param right: 右括號還可以使用的個數
:return:
"""if left ==
0and right ==0:
return
if right < left:
return
if left >0:
dfs(cur_str +
'(', left -
1, right)
if right >0:
dfs(cur_str +
')', left, right -1)
dfs(cur_str, n, 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...