LeetCode: Generate Parentheses
2016-10-12 17:50
381 查看
题目:
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:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
这是一个生成括号的问题。给出n对括号,要求生成不同搭配组合的括号。要找出所有满足条件的解,可以用深搜算法,用递归来实现,算法复杂度为o(2^n)。由于左括号一定优先于右括号,算法执行时按先给左括号,然后在确定已给的左括号大于右括号的情况下,再给右括号。代码:
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:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
这是一个生成括号的问题。给出n对括号,要求生成不同搭配组合的括号。要找出所有满足条件的解,可以用深搜算法,用递归来实现,算法复杂度为o(2^n)。由于左括号一定优先于右括号,算法执行时按先给左括号,然后在确定已给的左括号大于右括号的情况下,再给右括号。代码:
class Solution { public: //递归过程 void generate(vector<string>& result,string s,int m,int n) { if(m==0&&n==0) result.push_back(s);//递归结束条件 else { if(m!=0) generate(result,s+'(',m-1,n);//放左括号 if(m<n&&n!=0) generate(result,s+')',m,n-1);//放右括号 } } vector<string> generateParenthesis(int n) { vector<string> result; string temp=""; if(n==0) return result; generate(result,temp,n,n); return result; } };
相关文章推荐
- 【LeetCode】C# 22、Generate Parentheses
- [LeetCode] Generate Parentheses
- [LeetCode] Generate Parentheses
- leetcode-generate parentheses
- 【Leetcode-Medium-22】Generate Parentheses
- LeetCode Generate Parentheses DFS或者生产呢排列
- LeetCode – Refresh – Generate Parentheses
- leetcode之 Generate Parentheses
- 【LeetCode】 022. Generate Parentheses
- leetcode-Generate Parentheses
- LeetCode-22-Generate Parentheses(DFS/递归)-Medium
- LeetCode——Generate Parentheses
- [LeetCode]Generate Parentheses
- LeetCode - Generate Parentheses
- 【LeetCode】Generate Parentheses
- leetcode: Generate Parentheses
- 【LeetCode】【Array】【22】Generate Parentheses
- LeetCode - Generate Parentheses
- LeetCode——Generate Parentheses
- 【LeetCode】Generate Parentheses