「力扣」第 22 题:括号生成(中等)


「力扣」第 22 题:括号生成(中等)

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

例如,给出 n = 3,生成结果为:

[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

思路:

  • 左右都有可以使用的括号数量,即严格大于 $0$ 的时候,才产生分支;
  • 左边不受右边的限制,它只受自己的约束;
  • 右边除了自己的限制以外,还收到左边的限制,即右边剩余的数量一定得在严格大于左边剩余的数量的时候,才可以“节外生枝”;
  • 在左边和右边剩余的括号数都等于 $0$ 的时候结算。

image-20191019103840560

image-20191019102109661

注意:由于字符串在传参的时候,每一次都生成新的字符串,因此没有显式「回溯」的过程。


文章作者: liweiwei1419
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liweiwei1419 !
评论
 上一篇
「力扣」第 51 题:N 皇后 「力扣」第 51 题:N 皇后
「力扣」第 51 题:N 皇后传送门:英文网址:51. N-Queens ,中文网址:51. N皇后 。 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 上图为 8 皇后问题的一种解法。
下一篇 
「力扣」第 17 题:电话号码的字母组合 「力扣」第 17 题:电话号码的字母组合
「力扣」第 17 题:电话号码的字母组合 以前我不知道算法和数据结构如此重要,只是为了准备面试才会去看「面试宝典」里的算法。「面试宝典」里讲的就只有选择排序和插入排序,学完一次忘记一次。其实在算法的世界,有很多知识要我们去学习。 链接
  目录