当前位置: 首页> 财经> 产业 > Leetcode:括号生成

Leetcode:括号生成

时间:2025/7/26 9:19:07来源:https://blog.csdn.net/m0_73975164/article/details/139544801 浏览次数:0次

题目链接:22. 括号生成 - 力扣(LeetCode)

题目分析 

1、括号的类型只有()一种,没有{}或者[]

2、括号可以进行多层嵌套

3、有效的括号组合需要满足以下两个条件(任意一个子串)

  • 总体上,左括号数量 == 右括号数量
  • 从左向右开始数一个子串时,在任意时刻,左括号的数量 >= 右括号数量

4、当我们开始进行生成时,会出现下图所示的过程:

  • 当left大于等于n时就不能再添加左括号
  • 当right大于等于left时也不能添加左括号
  • 当right==n时开始回退(因为先添加的肯定是左括号,所以后添加的右括号都等于n了,那么左括号应该也满足了)

普通版本(回溯)

class Solution {int left,right,m;string path;//每一条路径上的最终结果vector<string> res;//最终结果
public:vector<string> generateParenthesis(int n) {m = n;dfs();//当dfs函数走完后所有的括号就完成了括号的组成return res;}void dfs(){if(right == m){res.push_back(path);//将当前组合完成的子串尾插给最终结果return;}if(left < m)//用递归添加左括号{path.push_back('(');++left;dfs();path.pop_back();--left;}if(right < left)//添加右括号{path.push_back(')');++right;dfs();path.pop_back();--right;}}
};

 优化版本(待补充)

~over~

关键字:Leetcode:括号生成

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: