22.括号生成
这道题前段时间广联达笔试的时候还遇到过,所以还有印象
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
- 用的是DFS的思想。
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
if(n==0) return {};
if(n==1) return {"()"};
generate(0,0,res,n,"");
return res;
}
void generate(int x,int y,vector<string > &res,int n,string ass){
//要注意vector作为参数要加引用&,不然无法改变vector的内容,只是拷贝一个副本。
if(x>n || y>n || y>x) return;
if(x==n && y==n) {
res.push_back(ass);
return;
}
generate(x+1,y,res,n,ass+'(');
generate(x,y+1,res,n,ass+')');
}
};
通过时间: