调试中...
调试中...
题目描述
题目描述
题解
题解
提交记录
提交记录
代码
代码
测试用例
测试用例
测试结果
测试结果
中等
相关标签
相关企业
提示

括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。

说明:解集不能包含重复的子集。

示例:

输入:n = 3
输出:
[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]
通过次数
38.4K
提交次数
46.6K
通过率
82.3%


相关企业

提示 1
尝试简单构建法。

提示 2
假设我们有编写两对括号的所有有效方法。怎么用这个来得到编写三对括号的所有有效方法?

提示 3
我们可以通过向两对括号的列表中添加第三对括号来生成三对括号的组合。我们要在其前面、周围、后面添加第三对括号。即()、()、()。这样有效吗?

提示 4
前面提示给出的解法存在的问题在于可能有重复的值。我们可以通过使用散列表来消除这种情况。

提示 5
或者,可以考虑通过移动字符串并在每个步骤添加左侧和右侧的括号来完成此操作。这会消除重复吗?如何知道能否添加左侧或右侧的括号?

提示 6
在每一步添加一个左或右括号将消除重复。每个子字符串在每一步都是各不相同的。因此,总字符串将是独一无二的。

提示 7
我们可以通过计算左、右括号数保证这个字符串是有效的。添加一个左括号,直到括号的总数成对,这样字符串总是有效的。只要count(left parens) <= count(right parens),就可以添加一个右括号。

评论 (0)

《程序员面试金典(第 6 版)》独家授权
本书是原谷歌资深面试官的经验之作,帮助了许多想要加入脸书、苹果、谷歌等 IT 名企的求职者拿到 Dream offer。本专题的 100+ 编程面试题是在原书基础上精心挑选出来的,帮助你轻松应战 IT 名企技术面试。
© 2025 领扣网络(上海)有限公司
0 人在线
行 1,列 1
n =
3
Source