1. 程式人生 > 實用技巧 >22. 括號生成-遞迴dfs回溯-中等難度

22. 括號生成-遞迴dfs回溯-中等難度

問題描述

數字 n代表生成括號的對數,請你設計一個函式,用於能夠生成所有可能的並且 有效的 括號組合。

示例:

輸入:n = 3
輸出:[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/generate-parentheses

解答

'''
遞迴,dfs,回溯:
唯一獨特的點,是用value表示括號是否匹配,value必不為負,當value=0的時候,匹配。
'''
class Solution:
    
def generateParenthesis(self, n): result = [] def backtrack(self, arr, value): if len(arr) == 2*n: if value == 0: result.append(''.join(arr)) return if value >= 0: arr.append('(') value
+= 1 backtrack(self, arr, value) arr.pop() arr.append(')') value -= 2 backtrack(self, arr, value) arr.pop() else: return backtrack(self, [], 0) return result