zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    JNday7-pm
    JNday7-am
    bzoj1047理想的正方形
    关于OI中简单的常数优化
    bzoj1050旅行
    bzoj1044木棍分割
    bzoj1875 HH去散步
    bzoj1059矩阵游戏
    bzoj2705Longge的问题
    bzoj1833数字计数
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10464785.html
Copyright © 2011-2022 走看看