写点什么

[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)}
复制代码


用户头像

Dead or Alive. 生存战斗是知识的源泉! 2018.11.08 加入

我是一名SRE哨兵,目前是好大夫基础架构部高级工程师。专注于 SRE,微服务、中间件的稳定性和可用性建设,整体负责好大夫服务治理云平台的设计和搭建!

评论

发布
暂无评论
[Day44]-[回溯]-括号生成_LeetCode_方勇(gopher)_InfoQ写作社区