Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.spa
For example, given n = 3, a solution set is:code
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]orm
这是n = 2的状况.就是从 ( 开始遍历,假如 ( 的数目大于 ) 的数目 那就返回,这样是不符合条件的,(ps:这里的数目是指剩余的数目,若是左括号剩余的多,那说明已经匹配好的字符串中多了右括号,这种状况没法经过继续添加括号来知足条件,因此要返回,就像图中最右边那个节点同样)而后其余的就是照常遍历就ok.知足left == 0 && right == 0 push到res里面.blog
/** * @param {number} n * @return {string[]} */ var generateParenthesis = function(n) { var res = []; helper(res, "", n, n); return res; }; var helper = (res, s, left, right) => { if (left > right) { return; } if (left == 0 && right == 0) { res.push(s); return; } if (left > 0) { helper(res, s+"(", left-1, right); } if (right > 0) { helper(res, s+")", left, right-1); } };