题目描述:
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
我的解题:
1.感觉自己好像忘不掉电话号码那道题了,总是想用queue,这道题用queue写了下,时间超出限制了。。。
2.这题好像更适合递归
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
dfs(res,"",n,n);
return res;
}
void dfs(vector<string>& res,string s,int a,int b){//ab分别代表还需要的左右括号数目
if(a==0&&b==0){
res.push_back(s);
return;
}
if(a>b) return;
if(a>0) dfs(res,s+'(',a-1,b);
if(b>0) dfs(res,s+')',a,b-1);
return;
}
};