22. 括号生成(dfs)

22. 括号生成

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

示例 1:

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

示例 2:

输入:n = 1
输出:["()"]

提示:

  • 1 <= n <= 8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
func generateParenthesis(n int) []string {
    var res = make([]string, 0)
    if n <= 0 {
        return res
    }
    var dfs func(string,int,int)
    dfs = func(path string, open int, close int) {<br>     // 遍历完成,将结果记录在res中
        if len(path) == 2*n {
            res = append(res,path)
            return
        }<br>     // 左(开)括号数量过半不再向下搜索
        if open < n {
            dfs(path + "(", open + 1, close)
        }
     // 右(闭)括号数量比开括号多则为无效组合
        if close < open {
            dfs(path + ")", open, close + 1)
        }
    }
    dfs("",0,0)
    return res
}

 

posted on   HHHuskie  阅读(22)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示