剑指 Offer II 085. 生成匹配的括号

使用递归回溯,快速解决

class Solution {
    
    
    public List<String> generateParenthesis(int n) {
    
    
        List<String> list = new ArrayList<>();
        dfs("",n,n,list);
        return list;
    }
    public void dfs(String sb, int left, int right, List<String> list) {
    
    
    //如果剩下的左括号大于剩下的右括号,那不可能完成了
        if(left>right) return;
        if(left==0 && right==0) list.add(sb);
        if(left>0) dfs(sb+'(', left-1,right,list);
        if(right>0) dfs(sb+')',left,right-1,list);
    }
}

Guess you like

Origin blog.csdn.net/weixin_44927247/article/details/120616294