zoukankan      html  css  js  c++  java
  • Leetcode_22【括号生成】

    文章目录:

    • 题目
    • 脚本一
    • 脚本一逻辑
    • shell脚本分享

    题目:

    给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

    例如,给出 n = 3,生成结果为:

    [
    "((()))",
    "(()())",
    "(())()",
    "()(())",
    "()()()"
    ]


    脚本一:【用时:36ms】

    class Solution:
        def generateParenthesis(self, n: int) -> List[str]:
            lists = []
            if n >0 and not lists :lists.append("(")
            while lists:
                zuo = lists[0].count("(")
                you = lists[0].count(")")
                if zuo > you:
                    if zuo == n:
                        lists.append(lists[0]+")")
                        lists.pop(0)
                    else:
                        lists.append(lists[0] + ")")
                        lists.append(lists[0] + "(")
                        lists.pop(0)
                else:
                    if zuo == n:
                        return(lists)
                    else:
                        lists.append(lists[0] + "(")
                        lists.pop(0)

    脚本一逻辑:

    • 括号生成的处理思路是:
      • 第一:无论从那个位置从左往右算起,左括号的数量一定要大于或等于右括号,如(()和(())
      • 第二:在左括号的数量小于目标数n时,则可以在此元素的基础上加上一个左括号(和在此元素上添加右括号")"组成新的两个元素,然后再把旧元素删除
      • 第三:在左括号的数量等于目标数n时,则只能在此元素的基础上加上一个右括号")",然后再把旧元素删除
      • 第四:在第三的基础上,如果左括号的数量等于右括号的数量,则可以停止循环,并返回结果了

    shell解题分享:

    https://blog.csdn.net/weixin_43428906/article/details/102790053

    此链接是笔者较早时间使用shell解决此题的文章,分享给有兴趣的朋友

  • 相关阅读:
    Linux MySQL的root无法登录数据库ERROR 1045 (28000)
    Linux 命令行初始化MySQL数据库
    Centos6、Centos7防火墙基本操作整理
    文本三剑客之awk
    加密类型、数据加密解密过程以及CA创建
    Centos7启动流程及systemd中Nginx启动配置
    Linux任务计划
    Linux进程管理
    IP地址简介及Linux网络管理工具
    Linux脚本
  • 原文地址:https://www.cnblogs.com/mailong/p/12037807.html
Copyright © 2011-2022 走看看