22. Generate Parentheses

题目来源:
 https://leetcode.com/problems/generate-parentheses/
自我感觉难度/真实难度:
 
题意:
 
分析:

自己想了一个插空的方法,写出来了,但是效率不是很高,因为是循环了 所有的情况,这里需要需要主要条件的使

自己的代码:
class Solution:
    def generateParenthesis(self, n: int) -> List[str]:
        ini_str='()'
        if n==0:
            return []
        res=["()"]
        if n==1:
            return ["()"]
        for i in range(n-1):
            insert_place=2*(i+1)+1
            Leave_one=set()
            for paren in res:
                for j in range(insert_place):
                    newParen=paren[:j]+'()'+paren[j:]
                    Leave_one.add(newParen)
            res=list(Leave_one)
        return res   
代码效率/结果:
 
优秀代码:
def generateParenthesis(self, n):
    def generate(p, left, right, parens=[]):
        if left:         generate(p + '(', left-1, right)
        if right > left: generate(p + ')', left, right-1)
        if not right:    parens += p,
        return parens
    return generate('', n, n)

代码效率/结果:
 
自己优化后的代码:
 
反思改进策略:

 1.使用回溯法,可以节省时间

写题时间时长:

3.0h

原文地址:https://www.cnblogs.com/captain-dl/p/10464785.html