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

  • 相关阅读:
    单调栈问题解析
    Linux进程状态切换
    Shell编程小例子
    Linux之shell编程
    树的遍历框架
    你真的会求1-100有多少个素数吗
    java实现LRU算法
    从上到下打印二叉树 III
    从上到下打印二叉树I
    模拟盘电路板调试过程中出现的问题
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10464785.html
Copyright © 2011-2022 走看看