letcode-括号生成
递归大法,空间换时间
就是记录左右括号数,一旦右括号数大于左括号数,退出。
当左右括号数相等,且等于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-括号生成的更多相关文章
- c++刷题(21/100)树的打印、矩阵覆盖和括号生成
题目一:把二叉树打印成多行 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 思路:一开始以为2维的vector可以直接访问,但是试了是不行,会报错,vector在有值之前不能直接访问 ...
- Leetcode之回溯法专题-22. 括号生成(Generate Parentheses)
Leetcode之回溯法专题-22. 括号生成(Generate Parentheses) 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n ...
- 【leetcode-22】括号生成
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "(()())& ...
- LeetCode 22. 括号生成(Generate Parentheses)
22. 括号生成 22. Generate Parentheses 题目描述 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结 ...
- Java实现 LeetCode 22 括号生成
22. 括号生成 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", &quo ...
- 【LeetCode】22. Generate Parentheses 括号生成
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:括号, 括号生成,题解,leetcode, 力扣,Pyt ...
- leecode 22 括号生成
22. 括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合. 示例 1: 输入:n = 3 输出:["((()))"," ...
- [LeetCode] 22. 括号生成
题目链接:https://leetcode-cn.com/problems/generate-parentheses/ 题目描述: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能 ...
- [Swift]LeetCode22. 括号生成 | Generate Parentheses
Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...
- 括号生成(Java实现)
题目: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n =3,生成结果为: [ "((()))", "(()( ...
随机推荐
- 不同数据库创建用户,数据库的SQL语句整理
不同数据库创建用户,数据库的SQL语句整理 MySQL mysql -uroot -p # 输入密码登录数据库 CREATE DATABASE IF NOT EXISTS xxxdata_somein ...
- [转帖]SPEC CPU 2017 单线程整数性能测试与总结 (2022)
https://zhuanlan.zhihu.com/p/574105237 x86处理器的整数性能在过去4年间取得了长足的进步 x86处理器移动端性能缩水非常严重 ARM公版的旗舰级处理器相比前代进 ...
- [转帖]TiDB 6.1 单机环境 On openEular 2003 SP3
https://tidb.net/book/book-rush/best-practice/other-practice/tidb61-on-openEular2003 背景 最近对国产操作系统很感 ...
- [转帖]linux下 进程io队列,IO队列和IO调度
IO体系概览 先看看本文主题IO调度和IO队列处于整个IO体系的哪个位置,这个IO体系是非常重要的,了解IO体系我们可以对整个IO过程有个全面的认识.虽然一下两下并不清楚IO体系各个部分的细节,但是我 ...
- 公司内部Oracle RAC测试环境的简单使用说明.
1. 公司内部要测试Oracle RAC系统的创建与测试工作. 因为Oracle RAC 主要需要 多个网段以及共享存储, 直接使用ESXi搭建比较复杂 所以我这边使用vagrant的方式搭建Orac ...
- nginx 最简单的在同一个配置文件里面将http 监听的端口转发到其他端口的方法
今天发现一个问题, 我这边修改了nginx 的listen的端口之后 应用出现了问题 无法使用. 想到之前曾经试验过 tcp 的 proxy 所以就想到直接再配置文件的默认添加一句话 启动TCP的 端 ...
- 【分享笔记】druid存储系统-思维导图
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu 公众号:一本正经的瞎扯 源于:<Druid实时大数据分析原理与实践>这本书的阅读笔记 ...
- 自定义httpServletRequestWrapper导致上传文件请求参数丢失
问题背景 项目是 SpringBoot 单体式,在项目中,为了实现调用 controller 请求的日志记录功能.因此做了以下配置: 创建自定义拦截器 LogInterceptor; 因为需要使用到流 ...
- Flask 框架:运用Axios库实现前后端交互
Axios 是一个基于promise的HTTP库,该库是一个更好的替代ajax向后端发送数据或请求数据的前端组件库,其本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规 ...
- 关于Windows11的优化内容 - 进阶者系列 - 学习者系列文章
这几天无事,想起上次刚重装的Windows 11操作系统,对于系统优化的内容想记录一下,以前没写过相关的博文,这次就做个记录吧.对于Windows 11,已经出来几年了,相关的设置啥的也有,就是优化方 ...