题目: https://leetcode-cn.com/problems/generate-parentheses/
思路:
因为左右括号需要匹配、闭合。所以对应“(”和“)”的数量都是n,当满足这个条件时,一次递归就结束,将对应值放入结果数组中。
这里有一个潜在的限制条件:有效的括号组合。对应逻辑就是在往每个位置去放入“(”或“)”前:
1.需要判断“(”的数量是否小于 n
2.“)”的数量是否小于“(”
/**
* @param {number} n
* @return {string[]}
*/
var generateParenthesis = function(n) {
let res = []
const generate = (cur, left, right) => {
if(left === n && right === n ){
res.push(cur)
return
}
if(left < n){
generate(cur + '(', left + 1, right)
}
if(right < left){
generate(cur + ')', left, right + 1)
}
}
generate('', 0 , 0)
return res
};