本文最后更新于:2023年3月19日 晚上
- 括号生成
22. 括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 **有效的 **括号组合。
示例 1:
输入:n = 3 输出:[“((()))”,”(()())”,”(())()”,”()(())”,”()()()”]
示例 2:
输入:n = 1 输出:[“()”]
提示:
思路
回溯法优先添加左括号,然后再添加右括号保证括号合法性
解答
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
|
var generateParenthesis = function (n) { const stack = []; const res = []; const dfs = (left, right) => { if (left === n && right === n) { res.push(stack.join("")); return res; } if (left < n) { stack.push("("); dfs(left + 1, right); stack.pop(); } if (right < left) { stack.push(")"); dfs(left, right + 1); stack.pop(); }
return res; }; return dfs(0, 0); };
|