public class Solution {
public ArrayList<String> generateParenthesis(int n) {
// Start typing your Java solution below
// DO NOT write main() function
ArrayList<String> ret = new ArrayList<String>();
char[] chars = new char[2*n];
solve(0,0,0,2*n,chars,ret);return ret; }
}
public void solve(int position,int leftnum,int left,int total,char[] chars,List<String> list){
if(position >= total){
list.add(new String(chars));
return;
}
if(leftnum == 0 && left < total/2){
chars[position] = '(';
solve(position+1,leftnum + 1,++left,total,chars,list);
}else{
if(left >= total/2){
chars[position] = ')';
solve(position+1,leftnum - 1,left,total,chars,list);
}else{
chars[position] = ')';
solve(position+1,leftnum - 1,left,total,chars,list);
chars[position] = '(';
solve(position+1,leftnum + 1,++left,total,chars,list);
}
}
}Generate Parentheses
最新推荐文章于 2021-08-24 11:24:33 发布
本文介绍了一个使用递归方法生成所有有效括号组合的Java算法。该算法通过递归地添加左括号和右括号,并确保任何时候右括号的数量不超过左括号的数量来构造有效的括号字符串。
2072

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



