22. 括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

示例 1:

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

示例 2:

输入:n = 1
输出:["()"]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/generate-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:
引用自Yuyu
在这里插入图片描述

代码:

class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        if n == 0:
            return 0
        # 定义状态
        # res[i]表示数字i可以生成res[i]个有效的括号组合列表
        # 下标0表示没有
        res = []
        res.append([None])
        # 下标1对应有效括号()
        res.append(['()'])
        for i in range(2, n+1):
            l = []
            for j in range(i):
                p = res[j]
                q = res[i-j-1]
                for pp in p:
                    for qq in q:
                        if pp == None:
                            pp = ''
                        if qq == None:
                            qq = ''
                        el = "(" + pp + ")" + qq
                        l.append(el)  # 把所有可能的情况添加到 l 中
            res.append(l)  # l这个list就是i组括号的所有情况,添加到total_l中,继续求解i=i+1的情况
        return res[n]
posted @   小Aer  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示