中等
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
提示:
1 <= n <= 8
代码
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> result;
generate(result, "", n, 0);
return result;
}
private:
void generate(vector<string>& result, string current, int left, int right) {
if (left == 0 && right == 0) {
result.push_back(current);
return;
}
if (left > 0)
generate(result, current + '(', left - 1, right + 1);
if (right > 0)
generate(result, current + ')', left, right - 1);
}
};
- 不能最开始传入
left=n,right=n,这样会导致出现右括号在前的错误情况。
471

被折叠的 条评论
为什么被折叠?



