Leetcode打卡 | No.22 括号生成
No.22 括号生成
题目 :
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[ "((()))", "(()())", "()(())", "(())()", "()()()" ]
这一题和之前一题看起来类似 ,但难度却上升很多了 ,小伙伴们可以温故一下之前类似的题目 :
两题差别有两个 ,一个是生成括号只包括小括号 ‘()’ ,另一个是逻辑相逆 ,这里是要生成有效的括号序列 。一个很关键的问题就出来了 ,什么样的序列有效呢 ?当然可以参考第 20 题 ,但是这里更简单只有一种小括号字符 。分析发现只要左右小括号数量相等 ,生成的括号序列就有效 。
这里提供两种思路 ,一个是暴力法 ,生成所有的括号序列 ,再判断是否有效 ;一个是递归生成有效的序列方法 。
思路一 :这里只有 ‘( ’ 和 ‘ )’ 两种字符可能 ,暴力生成所有字符串序列有 2的2n次方种可能 。根据自己的思维 ,小詹分成两个关键点讲解 ,一个是如何判断有效 ,一个是如何暴力生成所有字符串 。判断有效与否只需要当生成字符串序列长度为 2n 时判断是否左右括号数量相等 ;生成所有字符串则是利用递归思路 ,而只有左右括号两种可能 ,那么问题就简单了 ,见下代码 :
思路二 :与思路一不同 ,只有在我们知道序列仍然保持有效时才添加 '('
or ')'
,n 对括号意味着左右括号数量都为 n ,所以子函数可以以当前括号序列+左括号数量+右括号数量为参数 ,利用递归生成所有有效的括号序列 !注意 ,这里生成的不在是所有的序列 ,而是通过控制左右括号数量生成有效序列 。具体代码如下 :
而且提交表明 ,思路二的速度快很多 ,小詹提交第一次beat 93% ,第二次就哈哈哈 ,加鸡腿吧骚年们 。
原文发布时间为:2018-08-20本文作者:小詹同学本文来自云栖社区合作伙伴“ 小詹学Python”,了解相关信息可以关注“ 小詹学Python”。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Go 标准库 http.FileServer 实现静态文件服务
http.FileServer 方法属于标准库 net/http,返回一个使用 FileSystem 接口 root 提供文件访问服务的 HTTP 处理器。可以方便的实现静态文件服务器。 http.ListenAndServe(":8080", http.FileServer(http.Dir("/files/path"))) 访问 http://127.0.0.1:8080,即可看到类似 Nginx 中 autoindex 目录浏览功能。 源码解析 我们现在开始将上述的那仅有的一行代码进行剖析,看看到底是如何实现的。源码中英文注释也比较详细,可以参考。 我们先看 http.Dir(),再看 http.FileServer(),而 http.ListenAndServe() 监听 TCP 端口并提供路由服务,此处不赘述。 http.Dir() 从以下源码我们可以看出,type Dir string 实现了 type FileSystem interface 的接口函数 Open,http.Dir("/") 实际返回的是 http.Dir 类型,将字符串路径转换成文件系统。 // 所属文...
- 下一篇
Spring Cloud Config服务器
服务器为外部配置(名称值对或等效的YAML内容)提供了基于资源的HTTP。服务器可以使用@EnableConfigServer注释轻松嵌入到Spring Boot应用程序中。所以这个应用程序是一个配置服务器: ConfigServer.java @SpringBootApplication @EnableConfigServer public class ConfigServer { public static void main(String[] args) { SpringApplication.run(ConfigServer.class, args); } } 像所有的默认端口8080上运行的所有Spring Boot应用程序一样,但您可以通过各种方式将其切换到常规端口8888。最简单的也是设置一个默认配置库,它是通过启动它的spring.config.name=configserver(在Config Server jar中有一个configserver.yml)。另一个是使用你自己的application.properties,例如 application.properti...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装