题目描述:
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
链接:https://leetcode-cn.com/problems/generate-parentheses/
示例:
解题思路:回溯 :通过确保每一步都能够实现有效序列,尽早实现剪枝;
我们首先找到回溯的出口条件:当左右括号都达到最大数量n时,加入结果集; 接下来以左括号开始,不断判断两个条件进行递归调用,直到满足出口条件: (1)左括号是否达到最大数量n; 若小于,则使左括号数量加一,路径加上'('; (2)左括号个数是否大于右括号个数; 若大于,则使右括号数量加一,路径加上')';
代码实现:
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
res = [] # 保存结果