leetcode22
LeetCode22-----------Generate Parentheses生成匹配的括号,括号数由输入给出。这个题目想了很久,后来在草稿上画个图就懂了。假设现在有两个容器分别放了左括号和右括号。初始状态,左括号的数目=右括号的数目=输入int n我们从容器中取括号放置的时候,必须满足一个条件:容器中剩余左括号的数目要始终小于等于容器中右括号的数目。网上有一个写的
·
LeetCode22-----------Generate Parentheses
生成匹配的括号,括号数由输入给出。
这个题目想了很久,后来在草稿上画个图就懂了。
假设现在有两个容器分别放了左括号和右括号。
初始状态,左括号的数目=右括号的数目=输入int n
我们从容器中取括号放置的时候,必须满足一个条件:
容器中剩余左括号的数目要始终小于等于容器中右括号的数目。
网上有一个写的非常好的博客,他把图画出来了。可以参考:http://blog.csdn.net/u012501459/article/details/46787097
根据以上思路写出代码:
class Solution {
private:
void MyFunc(vector<string>&result, string temp,int left,int right)
{
if (left == 0 && right == 0)
{
result.push_back(temp);
return;
}
else
{
if (left!=0&&left <= right)
{
MyFunc(result, temp+'(', left-1, right);
}
if (left < right&&right != 0)
{
MyFunc(result, temp+')', left, right-1);
}
}
}
public:
vector<string> generateParenthesis(int n) {
string temp="";
int left=n;
int right=n;
vector<string> result;
if (n == 0)
return result;
MyFunc(result, temp, left, right);
return result;
}
};
更多推荐
已为社区贡献1条内容
所有评论(0)