22. Generate Parentheses
2018-02-17 16:55
267 查看
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
思路:这道题要生成正确形式的括号匹配的数量,其实就是卡特兰数,这里就不详说了。至于要输出所有括号的正确组合形式,可以采用递归。用两个变量l和r记录剩余左括号和右括号的数量,当且仅当左右括号数量都为0时,正常结束。当然还有一点限制,就是剩余的右括号数量比左括号多时才能添加右括号。
代码1:
代码2:
For example, given n = 3, a solution set is:[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
思路:这道题要生成正确形式的括号匹配的数量,其实就是卡特兰数,这里就不详说了。至于要输出所有括号的正确组合形式,可以采用递归。用两个变量l和r记录剩余左括号和右括号的数量,当且仅当左右括号数量都为0时,正常结束。当然还有一点限制,就是剩余的右括号数量比左括号多时才能添加右括号。
代码1:
class Solution { public: vector<string> generateParenthesis(int n) { vector<string> res; addingpar(res, "", n, 0); return res; } void addingpar(vector<string> &v, string str, int n, int m){ if(n==0 && m==0) { v.push_back(str); return; } if(m > 0){ addingpar(v, str+")", n, m-1); } if(n > 0){ addingpar(v, str+"(", n-1, m+1); } } };
代码2:
class Solution { private: void generateParenthesis(vector<string> &v, string s, int l, int r){// l和r记录剩余左右括号的数量 if(l == 0 && r == 0) // 当且仅当左右括号数量都为0时,正常结束 v.push_back(s); if(l > 0) generateParenthesis(v, s + "(", l - 1, r); if(r > 0 && l < r) // 剩余的右括号数量比左括号多时才能添加右括号 generateParenthesis(v, s + ")", l, r - 1); } public: vector<string> generateParenthesis(int n) { vector<string> v; generateParenthesis(v, "", n, n); return v; } };
相关文章推荐
- [Leetcode] 22- Generate Parentheses
- 【Leetcode-Medium-22】Generate Parentheses
- 22-m-Generate Parentheses
- LeetCode 22_Generate Parentheses
- LeetCode_22 Generate Parentheses
- [leetcode 22]Generate Parentheses-----n对括号可以组成的括号对序列
- 22. Generate Parentheses
- 22. Generate Parentheses
- [Leetcode-22]Generate Parentheses 生成圆括号
- LeetCode 22 Generate Parentheses (DFS 构造)
- LeetCode-22 Generate Parentheses(合法括号情况)
- String-22-Generate Parentheses
- 22 Generate Parentheses
- 22. Generate Parentheses My Submissions QuestionEditorial Solution
- leetcode-22-Generate Parentheses
- Leet Code 22 Generate Parentheses - 生成括号 - Java
- LeetCode 22 Generate Parentheses(生成括号)
- 22. Generate Parentheses
- LeetCode 22 Generate Parentheses 卡特兰数问题,有待进一步学习
- 【leetcode】【22】Generate Parentheses