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 @ 2022-05-04 21:11  小Aer  阅读(12)  评论(0)    收藏  举报  来源