leetcode 22. 括号生成
问题描述
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
问题分析
代码
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> ans;
string path;
backtrack(ans,path,n,0,0);
return ans;
}
void backtrack(vector<string> &ans,string path,int n,int l,int r)
{
if(l > n || r > n || r > l) return ;
if(l == n && r == n)
{
ans.push_back(path);
return;
}
backtrack(ans,path+'(',n,l+1,r);
backtrack(ans,path+')',n,l,r+1);
}
};
结果
执行用时 :4 ms, 在所有 cpp 提交中击败了96.36%的用户
内存消耗 :18.4 MB, 在所有 cpp 提交中击败了25.18%的用户