zl程序教程

您现在的位置是:首页 >  其他

当前栏目

LeetCode | 括号生成

LeetCode 生成 括号
2023-06-13 09:15:37 时间

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

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

示例 2:

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

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

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