22. 括號生成-遞迴dfs回溯-中等難度
阿新 • • 發佈:2020-07-03
問題描述
數字 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