22. Generate Parentheses

class Solution {
    public List generateParenthesis(int n) {
        List ans = new ArrayList<>();
        if(n == 0){
            ans.add("");
            return ans;
        }
        if(n == 1){
            ans.add("()");
            return ans;
        }
        generator(ans, n, 0, 0, "");
        return ans;
    }
    
    void generator(List ans, int n, int left, int right, String prefix) {
        if(prefix.length() == 2*n) {
            ans.add(prefix);
            return;
        }
        if(left > right) {
            generator(ans, n, left, right+1, prefix+")");
        }
        if(left < n)
        {
            generator(ans, n, left+1, right, prefix+"(");
        }
    }
}

你可能感兴趣的:(leetcode)