22 括號生成 python

2021-10-23 04:30:57 字數 1014 閱讀 1506

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

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

[

"((()))"

,"(()())"

,"(())()"

,"()(())"

,"()()()"

]

回溯法:括號生成問題的兩個重要性質:

class

solution

:def

generateparenthesis

(self, n:

int)

-> list[

str]

:# 儲存合法結果

res =

# 當前的括號序列

track =

defbacktrack

(left, right, track)

:# 遞迴出口

# 非法情況

if right < left:

return

if left <

0or right <0:

return

# 合法情況,儲存結果

if left ==

0and right ==0:

''.join(track)

)return

if left >0:

'(')

backtrack(left -

1, right, track)

track.pop(

)if right >0:

')')

backtrack(left, right -

1, track)

track.pop(

)

backtrack(n, n, track)

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