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

  • 相关阅读:
    嵌入式(C)笔试题
    经典C语言编程注意点
    深拷贝和浅拷贝(一)
    拷贝构造函数
    树与二叉树的概念
    线性数据结构
    排序算法_冒泡排序
    排序算法_选择排序
    机器学习_支持向量机
    数据库_11_1~10总结回顾+奇怪的NULL
  • 原文地址:https://www.cnblogs.com/captain-dl/p/10464785.html
Copyright © 2011-2022 走看看