LeetCode第22题Generate Parentheses
Generate Parentheses
Generate Parentheses给定一个正整数,生成有效括号的所有组合,这里只需要生成小括号即可。
Example
Input: n = 3
Output: [
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
可见,当n
确定时,生成的解的长度是固定的2n
,并且解的开头一定是左括号,如果是右括号则是无效的解,左括号与右括号的数量必定是一样的,都是n
个,这些是分析题目要求得到的“先验知识”了,接下来开始Code
贝叶斯推断bushi。
怎么办呢,可以用递归或者说深度优先搜索的方法来遍历,每一个解看成一个长度2n
的一维数组,我们往里面填充左括号和右括号,起始值都是n
个,用掉一个就减去一个。如果当前还有左括号,就使用一个左括号,同时,如果右括号的数量比左括号多,则为左括号匹配一个右括号,直到两者都用完为止。
Solution
下面是Java
的代码:
class Solution { |
下面是Python
的代码:
class Solution: |
总结
第22题是一个中等题,难度还不算非常大,递归的方法也非常简洁易懂,加油↖(^ω^)↗
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WenQian Dong's Web!