LeetCode 022 Generate Parentheses
2024-09-04 00:03:53
题目描述:Generate Parentheses
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
分析:
递归
代码如下:
class Solution {
private:
vector<string> ret;
public:
void solve(int dep, int maxDep, int leftNum, int leftNumTotal, string s)
{
//如果(个数超出,return
if (leftNumTotal * 2 > maxDep)
return; //如果长度足够,return
if (dep == maxDep){
ret.push_back(s);
return;
} for(int i = 0; i < 2; i++) //加 (
if (i == 0)
solve(dep + 1, maxDep, leftNum + 1, leftNumTotal + 1, s + '(');
//加 )
else if (leftNum > 0)
solve(dep + 1, maxDep, leftNum - 1, leftNumTotal, s + ')');
} vector<string> generateParenthesis(int n){
ret.clear();
solve(0, 2 * n, 0, 0, "");
return ret;
}
};
Java:
public List<String> generateParenthesis(int n) { ArrayList<String> result = new ArrayList<String>();
dfs(result, "", n, n);
return result; } public void dfs(ArrayList<String> result, String s, int left, int right) { if (left > right) {
return;
} if (left == 0 && right == 0) {
result.add(s);
return;
} if (left > 0) {
dfs(result, s + "(", left - 1, right);
} if (right > 0) {
dfs(result, s + ")", left, right - 1);
} }
最新文章
- Java可变参数传递中可以接收多个对象
- 给dos命令“.bat”文件换图标
- LaTex 数学公式
- 将数据导出到Excel2007格式。
- 定一个小目标:明年1024能成功转行web前端,光荣地成为一个程序员!
- Spring 配置文件applicationContext.xml
- SQuirreL 连接 hive
- SQL判断字符串里不包含字母
- ZOJ 3794 Greedy Driver
- IPoint Interface接口
- cooking构建工具报错MSBUILD :error MSB4132解决办法
- 【JAVAWEB学习笔记】25_基础加强:类加载器、注解 @xxx和动态代理
- 友元函数 C++
- Linux修改主机名脚本-不重启-支持RedHat、SUSE
- java验证码生成
- Yii的操作提示框
- Mybatis 缓存失效的几种情况
- typeof 与instanceof
- Thread中的一些方法
- 理清cordova插件的调用流程