LeetCode | 括号生成

2023-03-08 14:09:26 浏览数 (1)

题目 22. 括号生成 - 力扣(LeetCode) 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1:

代码语言:javascript复制
输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]

示例 2:

代码语言:javascript复制
输入:n = 1输出:["()"]

提示: 1 <= n <= 8 题解 Python 3

代码语言:javascript复制
class Solution:    # 方法1: 递归法    # 时间复杂度: O(2^(2n) * n)    # 空间复杂度: O(n)    def generateParenthesis(self, n: int) -> List[str]:        def generate(A):            if len(A) == 2*n:                if valid(A):                    ans.append("".join(A))            else:                A.append('(')                generate(A)                A.pop()                A.append(')')                generate(A)                A.pop()        def valid(A):            bal = 0            for c in A:                if c == '(': bal  = 1                else: bal -= 1                if bal < 0: return False            return bal == 0        ans = []        generate([])        return ans

0 人点赞