題目描述:
示例:
解題思路:回溯 :通過確保每一步都能夠實現有效序列,盡早實現剪枝;
我們首先找到回溯的出口條件:當左右括號都達到最大數量n時,加入結果集;**實現:接下來以左括號開始,不斷判斷兩個條件進行遞迴呼叫,直到滿足出口條件:
(1)左括號是否達到最大數量n; 若小於,則使左括號數量加一,路徑加上'(';
(2)左括號個數是否大於右括號個數; 若大於,則使右括號數量加一,路徑加上')';
class solution(object):
def generateparenthesis(self, n):
""":type n: int
:rtype: list[str]
"""res = # 儲存結果
self.backtrack(res, n, 0, 0, '')
return res
def backtrack(self, res, n, left, right, path):
if left==n and right==n :
return
if left < n :
self.backtrack(res, n, left+1, right,path+'(')
if left > right:
self.backtrack(res, n, left, right + 1, path + ')')
if __name__ == '__main__' :
test = solution()
res = test.generateparenthesis(3)
print(res)
leetcode 括號生成(python)
題目 給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 思路 回溯法 class solution def generateparenthesis self,n int list str def generate item,le...
22 括號生成 python
給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 回溯法 括號生成問題的兩個重要性質 class solution def generateparenthesis self,n int list str 儲存合法結果 res 當...
python括號生成 python生成器
python生成器是用來代替 不一定能夠使用全部元素的陣列 等到使用某一元素時,才生成該元素,用來節省空間.python生成器寫法有兩種 第一種 陣列生成式的中括號變成小括號 生成器 arr x for x in range 1,6 生成器下乙個元素用next 來取得 print next1 pri...