LeetCode-022-GenerateParenthesis
1.题目
生成括号
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
1 | [ |
2.解题:
需要找出所有解,所以我们可以使用回溯法,使用递归找出所有合适的解.
回溯(Backtracking)算法思路:
在当前局面下,你有若干种选择。逐一尝试每一种选择。
如果发现某种选择行不通(违反了某些限定条件)就返回;
如果某种选择试到最后发现是正确解,就将其加入解集。使用递归解决问题需要明确以下三点: 选择 (Options) 、 限制 (Restraints) 和 结束条件 (Termination) 。即“ORT原则”。
来回到本题:
选择:两个选择:加左括号,加右括号.
限制:1.如果左括号用完,则不能添加左括号.
2.始终保证左括号<=右括号,这样才能保证括号匹配.因此当左右括号一样多 时,不能添加右括号.
结束条件:当左右括号都为零时,则表示找到一个解.
代码:
1 | class Solution { |