题目
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
解释
这是n = 2的情况.就是从 ( 开始遍历,假如 ( 的数目大于 ) 的数目 那就返回,这样是不符合条件的,(ps:这里的数目是指剩余的数目,如果左括号剩余的多,那说明已经匹配好的字符串中多了右括号,这种情况无法通过继续添加括号来满足条件,所以要返回,就像图中最右边那个节点一样)然后其他的就是照常遍历就ok.满足left == 0 && right == 0 push到res里面.
代码
/**
* @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);
}
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。