数字 `n` 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 **有效的** 括号组合。 **示例:** ```js 输入:n = 3 输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ] ``` [leetcode地址](https://leetcode-cn.com/problems/generate-parentheses/solution/gua-hao-sheng-cheng-by-user7746o/)
Activity
oxyzhg commentedon Sep 24, 2020
尝试解题失败,这写法执行时间和消耗内存挺高。记录下过程,等看看大家有什么好的解题思路。
dinjufen commentedon Sep 24, 2020
huangruoliang commentedon Sep 24, 2020
sisterAn commentedon Sep 24, 2020
解答:回溯算法(深度优先遍历)
算法策略: 回溯算法是一种搜索法,试探法,它会在每一步做出选择,一旦发现这个选择无法得到期望结果,就回溯回去,重新做出选择。深度优先搜索利用的就是回溯算法思想。
对应于本题,我们可以每次试探增加
(或),注意:加入
(的条件是,当前是否还有(可以选择加入
)的时候,受到(的限制,如果已选择的结果里的(小于等于已选择里的)时,此时是不能选择)的,例如如果当前是(),继续选择)就是()),是不合法的代码实现:
复杂度分析(来源leetcode官方题解):
leetcode