括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
1
2
2
/**
* @param {number} n
* @return {string[]}
*/
var generateParenthesis = function(n) {
if (n < 1) return []
let res = []
function helper(cur, left, right) {
if (left > n || right > left) return
if (cur.length === n * 2) {
res.push(cur)
}
helper(cur + '(', left + 1, right)
helper(cur + ')', left, right + 1)
}
helper('', 0, 0)
return res
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/generate-parentheses