leetcode 022. 括号生成

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

例如,给出 n = __3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

Image.png

code:

# 使用递规来求解,当右括号多于左括号的时候,就不符合条件了进行剪枝
class Solution:
    def generateParenthesis(self, n):
        if n == 0:
            return []
        result = []
        self.helper(n, n, '', result)
        return result

    def helper(self, l, r, item, result):
        # 当剩余左括号大于右括号,说明右括号大于左括号,就不符合条件了
        if l > r:
            return
        if l == r == 0:
            result.append(item)
        # 左括号大于0,就增加一个左括号
        if l > 0:
            self.helper(l - 1, r, item + '(', result)
        # 右括号大于0,就增加一个右括号
        if r > 0:
            self.helper(l, r - 1, item + ')', result)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出 n ...
    半亩房顶阅读 369评论 0 1
  • 题目描述: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出...
    LeeYunFeng阅读 1,357评论 0 50
  • 难度:Medium. 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 ...
    霞客环肥阅读 324评论 0 1
  • 1.题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出...
    NWPU_HaiboWu阅读 164评论 0 1
  • 明知行役苦,不忍便留汝。 汝有时乘车,我心寄轮轴。 汝有时乘船,我心在露宿。 强颜悲做欢,汝去莫回顾。 相会如有期...
    木子嫄阅读 392评论 0 4