目录
一、题目
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
提示:
1 <= n <= 8
二、解法
回溯,优先放置左括号,两个边界条件,一个是正常的,即左右都放完了,还有一个是异常的,也就是左边剩余的比右边多,直接return
就好了
完整代码
python
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
res = []
path = ''
def backtrack(left, right, path):
if left > right:
return
if left == right == 0:
return res.append(path)
if left:
backtrack(left - 1, right, path + '(')
if right:
backtrack(left, right - 1, path + ')')
backtrack(n, n, '')
return res