1. 题目描述
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例:
输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]
2. 解题思路
这个题目的一个比较直接的思路就是使用递归,对于左括号的数量,要控制小于n,对于右括号的数量,要控制小于左括号的数量,并且要小于n,这样不断递归,保存可能的结果。
3. 代码实现
/*** @param {number} n* @return {string[]}*/function fn(left, right, n, s, res){if(left === n && right === n){return res.push(s)}if(left < n){fn(left+1, right, n, s+'(', res)}if(right < left){fn(left, right+1, n, s+')', res)}}var generateParenthesis = function(n) {let res = []fn(0, 0, n, '', res)return res};
4. 提交结果

