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 @   recklessh  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示