数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2:
输入:n = 1 输出:["()"]
提示:
1 <= n <= 8
var generateParenthesis = function(n) {
const result = []
const dfs = (left, right, str) => {
if (str.length === n * 2) {
result.push(str)
return
}
if (left > 0) {
dfs(left - 1, right, `${str}(`)
}
if (left < right) {
dfs(left, right - 1, `${str})`)
}
}
dfs(n, n, '')
return result
};
解题思路: 自己先用dfs的思路做了一下发现解不出来,后面直接查看的题解发现需要根据左右括号剩余数量来进行判断,挺精妙的。值得复习