递归解决,传入参数有:左括号数目lc,右括号数目rc,当前字符串temp,题目的参数n,返回的list
当lc==n时,后面全部加右括号,add到list
当lc>rc时,只能加右括号,即generate(lc,rc+1,temp+")",n,ret);
其他情况,既可以加左括号,也可以加右括号。
public ArrayList<String> generateParenthesis(int n) {
ArrayList<String> ret = new ArrayList<String>();
generate(0,0,"",n,ret);
return ret;
}
void generate(int lc,int rc,String temp,int n,ArrayList<String> ret){
if(lc == n){
for(int i = 0;i<n-rc;i++){
temp += ")";
}
ret.add(temp);
return;
}
generate(lc+1,rc,temp+"(",n,ret);
if(lc > rc){
generate(lc,rc+1,temp+")",n,ret);
}
}
本文介绍了一种使用递归算法生成所有有效括号组合的方法。通过跟踪左右括号的数量来构建有效序列,并将这些序列添加到结果列表中。文章详细展示了递归函数的工作原理及其调用过程。
2069

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



