Q22 - Medium - 括号生成

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

例如,给出 n = 3,生成结果为:

[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

回溯

class Solution:
    def generateParenthesis(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        res = []
        self.back_track(0, 0, n, "", res)
        return res
        
    def back_track(self, l, r, n, temp, res):
        if l > n or r > n or l < r:
            return
        if l == n and r == n:
            res.append(temp)
            return
        self.back_track(l+1, r, n, temp+"(", res)
        self.back_track(l, r+1, n, temp+")", res)

    # def back_track(self, l, r, n, temp, res):
    #     if r == n:  # 右括号 = n,已满足,则记录
    #         res.append(temp)
    #     elif r == l:  # 左括号 = 右括号,且未满足,则只能添加左括号
    #         self.back_track(l+1, r, n, temp+"(", res)
    #     elif l > r:  # 左括号 > 右括号
    #         if l == n:  # 如果左括号已满而右括号未满,则只能添加右括号
    #             self.back_track(l, r+1, n, temp+")", res)
    #         elif l < n:  # 左括号未满且大于右括号,则添加两种都可以
    #             self.back_track(l+1, r, n, temp+"(", res)
    #             self.back_track(l, r+1, n, temp+")", res)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 示例: 例...
    夜空中最亮的星_6c64阅读 190评论 0 0
  • 22. 括号生成 描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。...
    GoMomi阅读 349评论 0 0
  • 心若向阳,你就是我的向阳花,你用你的微笑治愈了我的心,你阳光明媚的笑靥感染者每个人,心中生出想一生陪在你身边,只为...
    南瓜的女子阅读 116评论 0 0
  • 上周五晚上终于不用加班提前回到了家里,打开门吓了一跳,环顾四周心理咯噔一下,家里进了盗贼了吗? 把屋里翻底朝...
    岩瑞阅读 322评论 0 0
  • 随着我国电影工业体系的进一步发展和完善,与电影有关的一切都似繁花绚放但也“乱人眼”,电影趋利性的时代特征,使很多人...
    尊宝影视阅读 292评论 0 0