22. Generate Parentheses(第六周)

来源:互联网 发布:最新java培训视频教程 编辑:程序博客网 时间:2024/06/06 04:14

本题的知识点是递归算法,判断递归终止的条件是left和right的值均为0.

两个递归循环的条件是left大于0和right小于left,在这两种情况下分别是在temp字符串后加上(和)。

由于没注意开始的时候将left-1和right-1误写成了left--和right--,导致提交时提示内存溢出。


class Solution 
{
public:
    vector<string> generateParenthesis(int n) 

{

vector<string> ret;

string temp="";
                helper(ret,temp,n,n);
return ret;
    }
void helper(vector<string> &result,string temp,int left,int right)
{
if(left == 0 && right == 0) 
{
   result.push_back(temp);
   return;//在此处加上return主动结束一种情况下的函数是比较保险的做法
}
if(left > 0) helper(result,temp+'(',left-1,right);
if(right > left) helper(result,temp+')',left,right-1);
}
};
0 0
原创粉丝点击