这个题唯一绕一点的是递归过程中,返回的值。
比如n=3。 左边为((的时候,这个时候,我们要么加左括号,然后lps=3, 补足右括号。
要么加右括号,加完右括号,我们可以选择加左括号或者右括号。
public ArrayList<String> generateParenthesis(int n) {
ArrayList<String> res = new ArrayList<String>();
generate(res, "", 0, 0, n);
return res;
}
public void generate(ArrayList<String> res, String temp, int lps, int rps, int n){
if (lps==n){
for (int i=0; i<n-rps;i++){
temp += ")";
}
res.add(temp);
return;
}
generate(res, temp+"(", lps+1, rps, n);
if (rps<lps)
generate(res, temp+")", lps, rps+1, n);
}
No comments:
Post a Comment