题目描述
实现
要生成所有可能的且有效的括号组合,可以使用回溯法(backtracking)。在回溯的过程中,需要跟踪两个重要指标:已经使用的左括号数量和右括号数量。为了保证生成的括号是有效的,需要满足两个条件:
①在任何时刻,使用的左括号数量必须大于等于右括号数量;
②最终使用的左括号和右括号数量必须相等,且都等于n。
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
result = [] #用于接收结果
def backtrack(S,left,right): #定义回溯
if len(S) == 2*n:
result.append(S)
return
if left < n: #如果左括号数量小于n,则可以添加一个左括号,左括号数量+1
backtrack(S +'(',left+1, right) #调用回溯
if right < left #如果又括号数量小于左括号数量,则可以添加一个右括号,右括号数量+1
backtrack(S+')',left, right+1 )
backtrack("",0,0) #初始化backtrack
return result