文档章节

【LeetCode】 57 括号生成

JaneRoad
 JaneRoad
发布于 07/14 23:54
字数 283
阅读 31
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

题目:

image-20200714235408159

image-20200714235359185

解题思路:

image-20200714235307974

image-20200714235323972

https://leetcode-cn.com/problems/generate-parentheses/solution/hui-su-suan-fa-by-liweiwei1419/

代码:

import java.util.ArrayList;
import java.util.List;

public class Solution {

    // 做减法

    public List<String> generateParenthesis(int n) {
        List<String> res = new ArrayList<>();
        // 特判
        if (n == 0) {
            return res;
        }

        // 执行深度优先遍历,搜索可能的结果
        dfs("", n, n, res);
        return res;
    }

    /**
     * [@param](https://my.oschina.net/u/2303379) curStr 当前递归得到的结果
     * [@param](https://my.oschina.net/u/2303379) left   左括号还有几个可以使用
     * [@param](https://my.oschina.net/u/2303379) right  右括号还有几个可以使用
     * [@param](https://my.oschina.net/u/2303379) res    结果集
     */
    private void dfs(String curStr, int left, int right, List<String> res) {
        // 因为每一次尝试,都使用新的字符串变量,所以无需回溯
        // 在递归终止的时候,直接把它添加到结果集即可,注意与「力扣」第 46 题、第 39 题区分
        if (left == 0 && right == 0) {
            res.add(curStr);
            return;
        }

        // 剪枝(如图,左括号可以使用的个数严格大于右括号可以使用的个数,才剪枝,注意这个细节)
        if (left > right) {
            return;
        }

        if (left > 0) {
            dfs(curStr + "(", left - 1, right, res);
        }

        if (right > 0) {
            dfs(curStr + ")", left, right - 1, res);
        }
    }
}
JaneRoad
粉丝 0
博文 177
码字总数 152591
作品 0
厦门
私信 提问
加载中
请先登录后再评论。
UTF-8字符串生成工具--utfout

utfout是一个命令行工具,可以通过多种多样的方式产生UTF - 8(Unicode)字符串并且直接将它们用于标准输出,标准错误,或直接传递到终端而不需要shell的支持。字符串可以是重复,推迟,随机生成的,...

书一
2012/11/09
726
0
fontconfig 配置生成工具--libeasyfc

libeasyfc 旨在提供一个简单的接口用来为每种语言生成 fontconfig 的别名映射配置。 要求: fontconfig >= 2.9.91 freetype GLib 2.0 libxml2 GObject Introspection (optional)...

匿名
2012/12/18
400
0
生成 RSA 密钥的工具--CSRTool

CSRTool是一个生成RSA 与 ECDSA 加密密钥对的图形界面软件。可以创建证书签名请求即:Certificate Signing Requests (CSRs) , 以及将加密密钥对合并到已签署的数字证书上(PKCS12, JKS, JCEKS...

匿名
2012/12/29
2.2K
0
程序文档生成工具--Flatdoc

Flatdoc 是一个小型的 JavaScript 文件,可读取 Markdown 文件并渲染成页面,特别适合用来为开源项目生成文档。 特点: 无需服务端组件支持 无需构建过程 可通过 Github Pages 发布 可获取来...

匿名
2013/05/28
1K
0
代码生成的底层应用框架--fastCSharp

fastCSharp是一个基于.NET元数据的代码生成的底层应用框架,目标是打造一个“开发+运行”效率双优的开源框架。 经过半年多的时间,除了与web开发直接相关的部分,都已经在fastCSharp part 1...

fastCSharp
2013/05/29
3.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

DCASE2020之声学场景分类优秀方案总结 - 知乎

DCASE(Challenge on Detection and Classification of Acoustic Scenes and Events),即声学场景和事件检测及分类竞赛,是世界范围内权威的声学比赛,从2013年至今已经成功举办了六届,随着越...

osc_sb30h1xb
14分钟前
0
0
百度资深JAVA程序员开源5000 页 Java 人必备学习手册开发下载!

今天给大家分享一套百度资深JAVA程序员开源在github的 5000 页的 Java 学习手册,新鲜出炉!此手册内容专注 Java技术,包括 JavaWeb,SSM,Linux,Spring Boot,MyBatis,MySQL,Nginx,Git...

倪升武
今天
0
0
自媒体多平台管理工具,管理多个账号一键发布

现在绝大多数人都认为自媒体账号运营操作起来很麻烦,尤其是对那些做收益的工作室来说,一个人管理那么多账号,登陆起来也很麻烦,在你认为很麻烦的时候,其实我们可以借助一些工具来帮助我们...

osc_e4tx8h6g
15分钟前
4
0
CVE-2017-0261及利用样本分析

CVE-2017-0261及利用样本分析 注意事项:1.本篇文章由Gcow安全团队复眼小组的ERFZE师傅原创,未经许可禁止转载2.本篇文章一共2313字,39张图,预计用时20分钟3.文中提及的方法仅供参考学习,若用在...

辞令_WhITECat安全团队
今天
0
0
fatal error: openssl/evp.h: 没有那个文件或目录

在陆佳华《嵌入式系统软硬件协同设计实战指南 第2版》一书的第13章节 编译U-boot时会遇到2个错误。原因很简单,就从一开始的错误提示着手: fatal error: openssl/evp.h: 没有那个文件或目录...

osc_8nnvoyb1
16分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部