Monday, January 13, 2014

Generate Parentheses LeetCode

这个题唯一绕一点的是递归过程中,返回的值。
比如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