Leetcode练习,Python:回溯算法类:第22题:括号生成:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

题目:

括号生成:数字 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