给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
class Solution:
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
#若左括号有剩余,则用左括号,若右括号剩余比左括号多,可以用右括号
result=[]
self.generte(n,n,'',result)
return result
def generte(self,left,right,str,result):
if left==0 and right==0:
result.append(str)
if left>0:
self.generte(left-1,right,str+'(',result)
if right>left:
self.generte(left,right-1,str+')',result)
执行用时: 48 ms, 在Generate Parentheses的Python3提交中击败了97.05% 的用户
思考:用递归的方法可以节省很多时间