[Day44]-[回溯]- 括号生成
作者:方勇(gopher)
- 2022 年 5 月 19 日
本文字数:526 字
阅读完需:约 2 分钟
22. 括号生成
数字
n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]
复制代码
示例 2:
输入:n = 1输出:["()"]复制代码
题解:
func TestGenerateParenthesis(t *testing.T) { var n = 3 // 括号数 var res []string // 结果集 var backtrack func(left, right int, track string) // 回溯 backtrack = func(left, right int, track string) { if left < 0 || right < 0 { // 如果越过边界返回 return } // ))(( 右括号数 先大于 左括号数 直接返回 if right < left { return } if left == 0 && right == 0 { // 获取结果 res = append(res, track) return } track += "(" // 做选择 backtrack(left-1, right, track) // 进入下个递归 track = track[:len(track)-1] // 撤销选择
track += ")" // 做选择 backtrack(left, right-1, track) // 进入下个递归 track = track[:len(track)-1] // 撤销选择 } backtrack(n, n, "") // 开始穷举 t.Log(res)}复制代码
划线
评论
复制
发布于: 刚刚阅读数: 4
方勇(gopher)
关注
Dead or Alive. 生存战斗是知识的源泉! 2018.11.08 加入
我是一名SRE哨兵,目前是好大夫基础架构部高级工程师。专注于 SRE,微服务、中间件的稳定性和可用性建设,整体负责好大夫服务治理云平台的设计和搭建!










评论