leetcode -- medium part

Posted autoria

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode -- medium part相关的知识,希望对你有一定的参考价值。

22. Generate Parentheses

 1 class Solution
 2 {
 3 private:
 4     void generateParenthesis(vector<string> &v, string s, int l, int r) // l和r记录剩余左右括号的数量
 5     {
 6         if(l == 0 && r == 0) // 当且仅当左右括号数量都为0时,正常结束
 7             v.push_back(s);
 8  
 9         if(l > 0)
10             generateParenthesis(v, s + "(", l - 1, r);
11         if(r > 0 && l < r) // 剩余的右括号数量比左括号多时才能添加右括号
12             generateParenthesis(v, s + ")", l, r - 1);
13     }
14 public:
15     vector<string> generateParenthesis(int n)
16     {
17     vector<string> v;
18     generateParenthesis(v, "", n, n);
19     return v;
20     }
21 };

括号匹配数是一个卡特兰数,f(x) = (2n)!/((n+1)! * n!) , f(3) = 5

当作dfs处理,这样得到的顺序是"("从多到少的顺序。

以上是关于leetcode -- medium part的主要内容,如果未能解决你的问题,请参考以下文章

leetCode热题40-45 解题代码,调试代码和思路

[LeetCode] 034. Search for a Range (Medium) (C++/Java)

leetcode131 分隔回文串(Medium)

leetcode75 颜色分类(Medium)

LeetCode:39. Combination Sum(Medium)

Leetcode medium难度顺序题解