LeetCode 22. Generate Parentheses
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
Example 1:
复制Input: n = 3
Output: ["((()))","(()())","(())()","()(())","()()()"]
Example 2:
Input: n = 1
Output: ["()"]
Constraints:
1 <= n <= 8
实现思路:
首先如果采用回溯算法去做题目一般都可以折射成N叉树的一个模型,然后采用回溯算法的代码模板来去做。
本题的规律是:
1.左括号'('的个数始终是大于等于右括号的')',所以当遍历到右括号多的时候就可以进行剪枝操作了,所以只有左括号还能输出的个数严格小于右括号的时候 才能进行输出右括号。
2.当左右括号还能输出的个数都为0的时候则为一组结果
AC代码:
class Solution {
vector<string> ans;
void dfs(string str,int left,int right) {
if(left==0&&right==0) {
ans.push_back(str);
return;
}
if(left>right) return;//剪枝
if(left>0)
dfs(str+'(',left-1,right);
if(left<right)//左括号还能输出的个数严格小于右括号的个数
dfs(str+')',left,right-1);
}
public:
vector<string> generateParenthesis(int n) {
dfs("",n,n);
return ans;
}
};
标签:
LeetCode题库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 长文讲解 MCP 和案例实战
· Hangfire Redis 实现秒级定时任务,使用 CQRS 实现动态执行代码
· Android编译时动态插入代码原理与实践
· 解锁.NET 9性能优化黑科技:从内存管理到Web性能的最全指南
· 通过一个DEMO理解MCP(模型上下文协议)的生命周期
· 工良出品 | 长文讲解 MCP 和案例实战
· 多年后再做Web开发,AI帮大忙
· 一天 Star 破万的开源项目「GitHub 热点速览」
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 别再堆文档了,大模型时代知识库应该这样建