递归大法,空间换时间

    就是记录左右括号数,一旦右括号数大于左括号数,退出。
当左右括号数相等,且等于n则为合法解。

  • 使用char数组取代StringBuilder可以减少内存使用,这样每次进行回溯时不需要再去删除末尾一位。
class Solution {
/**
* 括号生成
* */
public List<String> generateParenthesis(int n) {
List<String> result = new ArrayList<>();
char[] temp = new char[n * 2];
/**
* L-左括号数
* R-右括号数
* L + R = temp 下标
* */
temp[0] = '(';
deepParenthesis(result, temp, n, 1, 0);
return result;
} private void deepParenthesis(List<String> result, char[] temp, int n, int L, int R){
if (L==R && L ==n){
/** 左右括号数相等,且等于给定括号数 */
result.add(String.valueOf(temp));
return;
}
/** 左括号数小等于n,且不小于右括号数 */
if (L <= n && L >= R){
/** 下一步左括号 */
temp[L + R] = '(';
deepParenthesis(result, temp,n, L + 1, R);
/** 下一步右括号 */
temp[L + R] = ')';
deepParenthesis(result, temp,n, L, R + 1);
}
}
}

letcode-括号生成的更多相关文章

  1. c++刷题(21/100)树的打印、矩阵覆盖和括号生成

    题目一:把二叉树打印成多行 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 思路:一开始以为2维的vector可以直接访问,但是试了是不行,会报错,vector在有值之前不能直接访问 ...

  2. Leetcode之回溯法专题-22. 括号生成(Generate Parentheses)

    Leetcode之回溯法专题-22. 括号生成(Generate Parentheses) 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n ...

  3. 【leetcode-22】括号生成

    给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "(()())& ...

  4. LeetCode 22. 括号生成(Generate Parentheses)

    22. 括号生成 22. Generate Parentheses 题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结 ...

  5. Java实现 LeetCode 22 括号生成

    22. 括号生成 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", &quo ...

  6. 【LeetCode】22. Generate Parentheses 括号生成

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:括号, 括号生成,题解,leetcode, 力扣,Pyt ...

  7. leecode 22 括号生成

    22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合. 示例 1: 输入:n = 3 输出:["((()))"," ...

  8. [LeetCode] 22. 括号生成

    题目链接:https://leetcode-cn.com/problems/generate-parentheses/ 题目描述: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能 ...

  9. [Swift]LeetCode22. 括号生成 | Generate Parentheses

    Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...

  10. 括号生成(Java实现)

    题目: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n =3,生成结果为: [ "((()))", "(()( ...

随机推荐

  1. [转帖]datax安装+配置+使用文档

    1 DataX离线同步工具DataX3.0介绍 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hiv ...

  2. [转帖]怎样设计异步系统: Linux Native AIO vs io_uring

    https://zhuanlan.zhihu.com/p/149836046 Linux native aio一方面有其实用价值, 基本满足了特别业务比如大型数据库系统对异步io的需求, 另一方面却被 ...

  3. [转帖]多CPU && 多核CPU | 多进程 && 多线程 | 并行 && 并发

    https://cloud.tencent.com/developer/article/1886157?areaSource=&traceId=   文章目录 区分 多CPU &&am ...

  4. 跨主机Docker容器通信的学习

    背景 骨折在家找自己的人比较少. 又因为出不去也没法做运动,就不如将之前没学习深入的地方学习下 先是进行Docker 搭建 redis cluster的处理. 当时发现必须使用 --net=host进 ...

  5. Opentelemetry Metrics SDK

    Metrics SDK 目录 Metrics SDK 目标 期望 SDK 术语 数据流图表 要求 SDK MeterProvider Shutdown SDK:Instrument注册 SDK: Re ...

  6. NOI Linux 下 Geany 配置教程

    没有括号补全? 现在有自动括号补全了! 红色的 a.cpp 的意思是 a.cpp 没有保存. 现在来设置编译运行的快捷键. 不难推测 "%e" 是可执行文件的意思,"%f ...

  7. 【k哥爬虫普法】简历大数据公司被查封,个人隐私是红线!

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...

  8. 修改windows电脑键盘按键映射

    改键的需求 买了一把61键的小键盘,有些按钮没有,比如Home.End.四个方向键,这些键需要按Fn+XX来实现,所以上网查了一下键盘按键修改的方法,即把按键给改了,比如把右边的Ctrl改成方向键. ...

  9. 虚拟桌宠模拟器:VPet-Simulator,一个开源的桌宠软件, 可以内置到任何WPF应用程序

    虚拟桌宠模拟器:VPet-Simulator,一个开源的桌宠软件, 可以内置到任何WPF应用程序 虚拟桌宠模拟器 一个开源的桌宠软件, 可以内置到任何WPF应用程序 获取虚拟桌宠模拟器 OnSteam ...

  10. 解决问题:latex中bib引用顺序不正确,引用顺序和正文不一致

    问题:生成pdf时文献应用会乱序 引用bib格式的参考文献时,会这么写: \bibliographystyle{plain} \bibliography{%filename%.bib} 而plain的 ...