剑指 Offer II 085. 生成匹配的括号
一、题目描述
正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
提示:
1 <= n <= 8
二、解题
dfs深搜+双指针的回朔
通过递归的顺序来完成括号的添加
三、代码
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
def dfs(cur: str, left: int, right: int) -> None:
if left == n and right == n:
res.append(cur)
return
if left < n:
dfs(cur + '(', left + 1, right)
if left > right:
dfs(cur + ')', left, right + 1)
res = []
dfs('', 0, 0)
return res