📅  最后修改于: 2023-12-03 15:27:08.555000             🧑  作者: Mango
生成括号是一道经典的算法问题,其本质是要求我们找到所有 n 对括号的有效组合。
有效组合是指所有左右括号配对都正确的组合,例如对于 n=3,有效组合有如下 5 种:
这道题的解法,可以使用递归和回溯算法来实现。具体思路如下:
下面是一个使用 Python 语言实现的递归和回溯算法代码实现。其中,generate_parenthesis 函数是递归函数,而 helper 函数是用来实现回溯的辅助函数。
def generate_parenthesis(n):
"""
:type n: int
:rtype: List[str]
"""
def helper(cur, left, right):
"""
:type cur: str
:type left: int
:type right: int
"""
if left == n and right == n:
res.append(cur)
return
if left < n:
helper(cur + '(', left + 1, right)
if right < left:
helper(cur + ')', left, right + 1)
res = []
helper("", 0, 0)
return res
计算递归算法的时间复杂度需要考虑递归层数和每层的操作次数。对于本题,递归层数和左右括号的总数都是 n,因此时间复杂度为 O(2^n)。