22. 括号生成(中等)(1.5)

给出 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% 的用户

思考:用递归的方法可以节省很多时间

猜你喜欢

转载自blog.csdn.net/weixin_42234472/article/details/85837745