括號生成 LeetCode

2021-10-14 15:23:15 字數 841 閱讀 2618

暴力法是遞迴生成所有組合方式,同時判斷是否符合要求

回溯法,不需要在生成完整的組合之後再判斷,因為在每乙個位置最多有兩種擺放方法:當前還有左括號剩餘時,放置左括號;當前組合中已經放置的左括號的個數大於右括號個數時,放置右括號

然後回退一步,逆操作狀態值(此處狀態值為臨時儲存空間),檢視接下來剩餘哪種情況

class

solution

:def

generateparenthesis

(self, n:

int)

-> list[

str]

: result =

if n<=0:

return result

defback

(temp, left, right)

:# 滿足組合長度的條件,不需要判斷是因為組合生成的方式保證了合理性

iflen

(temp)==2

*n:''

.join(temp)

)return

# 還有左括號剩餘

if left'(')

back(temp, left+

1, right)

# 逆操作狀態值

temp.pop(

)# 已使用的左括號的個數大於右括號,說明此時放入右括號一定有左括號與其匹配

if left>right:

')')

back(temp, left, right+1)

temp.pop(

) back(

,0,0

)return result

leetcode 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 回溯法 遞迴每次填入的要麼是 要麼是 當然,第乙個肯定是 並且 的數目不會超過 記錄左括號和右括號的數量,當分別達到n時即為合格的狀態,可以壓入vector,當然為了去重最好先用...

leetcode 括號生成 1

題目鏈結 給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 我的方法,dfs,然後再n 1層上 的前面和後面分別新增括號 另外,這個總數是第n個卡塔蘭數 dfrac binomn 11 n2n class solution el...

leetcode 括號生成(python)

題目 給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 思路 回溯法 class solution def generateparenthesis self,n int list str def generate item,le...