22 括号生成

发布时间:2026/7/7 12:07:37

22 括号生成 题目数字 n 代表生成括号的对数请你设计一个函数用于能够生成所有可能的并且 有效的 括号组合。示例 1输入n 3输出[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]示例 2输入n 1输出[“()”]思路使用dfs回溯剪枝的方法。一共是2n个位置从第一个格子开始检查是否有合适的括号如果有继续检查下一个格子是否有合适的否则返回上一层继续检查。检查过程中可以添加限定条件leftn和rightleft缩小范围代码class Solution{public: vectorstringgenerateParenthesis(int n){vectorstringres;string temp;int left0, right0;dfs(n, left, right, temp, res);returnres;}void dfs(int n, int left, int right, string temp, vectorstringres){if(leftnrightn){res.push_back(temp);return;}if(leftn){temp.push_back(();dfs(n, left 1, right, temp, res);temp.pop_back();}if(rightleft){temp.push_back());dfs(n, left, right 1, temp, res);temp.pop_back();}}};感谢 华南溜达虎 力扣hot100

相关新闻