題目:
括號生成:數字 n 代表生成括號的對數,請你設計一個函數,用於能夠生成所有可能的並且 有效的 括號組合。
思路:
使用回溯算法,使用回溯算法的模板可以很快的求解。
程序:
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
if n <= 0:
return []
if n == 1:
return ["()"]
result = []
def backtrack(Curr, left, right):
if right == n: #
滿足結束條件
result.append(''.join(Curr))
return
if left < n:
Curr.append("(") #
做出選擇
backtrack(Curr, left + 1, right) #
路徑,選擇列表
Curr.pop() #
撤銷選擇
if right < left:
Curr.append(")")
backtrack(Curr, left, right + 1)
Curr.pop()
backtrack([], 0, 0)
return result
