22.括号生成

题目源于题目来源于leetcode

题目

括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

提示:

  • 1 <= n <= 8

解题思路:利用深度优先遍历,采用递归的方法,左括号大于零的时候继续产生左分支;左右括号数都为0时返回。

代码实现

public List<String> generateParenthesis(int n) {
        List<String> res=new ArrayList<>();
        if(n<=0){
            return res;
        }
        dfs("", n, n, res);
        return res;

    }
    public void dfs(String s,int left,int right,List<String> res){
        if(left==0&&right==0){
            res.add(s);
            return;
        }
        if(right>left){
            return;
        }
        if(left>0){
            dfs(s+")", left-1, right, res);
        }
        if(right>0){
            dfs(s+"(", left, right-1, res);
        }
    }

执行用时

posted @ 2022-08-09 23:13  recklessh  阅读(37)  评论(0)    收藏  举报