题目 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