leetCode 22. 括号生成 - Go 实现

  1. 括号生成

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

示例 1:

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

示例 2:

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

提示:

1 <= n <= 8

AC 代码

func generateParenthesis(n int) []string {

     l := list.New()
     gen(n, 0, 0, l, "")
     len := l.Len()

     str := make([]string, len)
     i := 0
     for e := l.Front(); e != nil; e = e.Next() {
         k := e.Value
         //fmt.Println(k.(string))
         str[i] = k.(string)
         i++
     }
    
    return str

}

func gen(n int, left int, right int, l *list.List, str string) {

    if left < right || left > n || right > n {
        return 
    }

    if left == n && right == n {
        l.PushBack(str)
    }

    gen(n, left+1, right, l, str+"(")
    gen(n, left, right+1, l, str+")")
}

欢迎关注程序员开发者社区

在这里插入图片描述

参考资料
wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付 39.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值