【leetcode每日刷题】22. 括号生成

import java.util.LinkedList;
import java.util.List;
class Solution {
    public List generateParenthesis(int n) {
        List ans = new LinkedList<>();
        generate(ans, new StringBuilder(), 0, 0, n);
        return ans;
    }
    public static void generate(List ans, StringBuilder sb, int open, int close, int max){
        if(sb.length() == 2 * max){
            ans.add(new String(sb));
            return;
        }
        if(open < max){
            sb.append('(');
            generate(ans, sb, open+1, close, max);
            sb.deleteCharAt(sb.length()-1);
        }
        if(close < open){
            sb.append(')');
            generate(ans, sb, open, close+1, max);
            sb.deleteCharAt(sb.length()-1);
        }
    }
}

使用回溯法。

你可能感兴趣的:(java,leetcode刷题)