数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:[“((()))”,”(()())”,”(())()”,”()(())”,”()()()”]
示例 2:
输入:n = 1
输出:[“()”]
示例 3:
输入:n = 2
输出:[“()()”,”(())”]
提示:
解析
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 26 27 28 29
|
var generateParenthesis = function (n) { const result = [];
function dfs(leftNum, rightNum, n, combine) { if (leftNum + rightNum === 2 * n) { result.push(combine); return; } if (leftNum < n) { dfs(leftNum + 1, rightNum, n, combine + "("); } if (rightNum < n && leftNum > rightNum) { dfs(leftNum, rightNum + 1, n, combine + ")"); } }
dfs(0, 0, n, ""); return result; };
|