22. Generate Parentheses产生所有匹配括号的方案
2024-08-21 01:31:43
[抄题]:
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
[暴力解法]:
时间分析:
空间分析:
[优化后]:
时间分析:
空间分析:
[奇葩输出条件]:
[奇葩corner case]:
[思维问题]:
不知道括号的backtracing怎么写:定义open和close整数,分open < max 和close < open两个阶段来回溯
[英文数据结构或算法,为什么不用别的数据结构或算法]:
[一句话思路]:
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:
[一刷]:
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
open close都是括号个数,int 直接加一就行了
[复杂度]:Time complexity: O() Space complexity: O(n)
[算法思想:迭代/递归/分治/贪心]:迭代
[关键模板化代码]:
[其他解法]:
[Follow Up]:
[LC给出的题目变变变]:
[代码风格] :
[是否头一次写此类driver funcion的代码] :
[潜台词] :
class Solution {
public List<String> generateParenthesis(int n) {
List<String> result = new ArrayList<String>();
if (n <= 0) return result;
generateParenthesisHelper(0, 0, new String(), result, n);
return result;
} public void generateParenthesisHelper(int open, int close, String item, List<String> result, int max) {
//add to result
if (item.length() >= 2 * max) {
result.add(item);
return ;
} //backtracing in 2 stages
if (open < max) generateParenthesisHelper(open + 1, close, item + '(', result, max);
if (close < open) generateParenthesisHelper(open, close + 1, item + ')', result, max);
}
}
最新文章
- Python excel 库:Openpyxl xlrd 对比 介绍
- 转: GUI应用程序架构的十年变迁:MVC,MVP,MVVM,Unidirectional,Clean
- FlashFXP(强大的FXP/ftp上传工具)V5.0.0.3722简体中文特别版
- atitit.404错误的排查流程总结vOa6
- hadoop结构出现后format变态
- 在Github上搭建你的博客
- pydev-python 链接mysql数据库(mac系统)
- CocoaPods在使用中的几个问题
- OpenGL学习-------点、直线、多边形
- Java获取http和https协议返回的json数据
- 底层码农的Stanford梦 --- 从SCPD开始 [转]
- tensorflow Relu激活函数
- Elasticsearch Search API
- 实验四 (1):定义一个形状类(Shape)方法:计算周长,计算面积
- [c/c++] programming之路(28)、结构体存储和内存对齐+枚举类型+typedef+深拷贝和浅拷贝
- poj3087 Shuffle&#39;m Up(模拟)
- timer控件、三级联动、帐号激活权限设置
- Jmeter(二十五)常见问题(转载)
- 【LGP4886 】快递员
- selenium-登录C语言中文网