LeetCode-22 括号生成
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/generate-parentheses
题目描述
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例 1:
输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
输入:n = 1
输出:["()"]
提示:
1 <= n <= 8
解题思路
由于n取值范围很小,所以可以直接进行模拟,对于n来说,组成的字符串将有2n个位置,每个位置在'('数量小于n时,可以设置为'(',在'(' 数目大于')'时,可以设置为')',通过枚举所有可能得解。
代码展示
class Solution { public: vector<string> mvstrRet; int mN; void dfs(int left, int right, string &str) { if(right == mN) { mvstrRet.push_back(str); return; } if(left < mN) { str.push_back('('); dfs(left + 1, right, str); str.pop_back(); } if(left > right) { str.push_back(')'); dfs(left, right + 1, str); str.pop_back(); } return; } vector<string> generateParenthesis(int n) { mN = n; string str; dfs(0, 0, str); return mvstrRet; } };
运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了