标签:
原题链接:https://oj.leetcode.com/problemset/algorithms/
这里用递归的方法实现。递归函数签名为void generate(int left, int right, int n, string prev)
1. left,right分别为当前左右括号的个数,prev缓存之前的临时结果
2. left小于n的时候,可以一直加入左括号
3. right必须小于left的个数的时候,才可以加入
4. 当right的个数等于n的时候,说明当前生成结束
class Solution { private: vector<string> res; public: vector<string> generateParenthesis(int n) { generate(0, 0, n, ""); return res; } void generate(int left, int right, int n, string prev) { if (right == n) { res.push_back(prev); } if (left < n) { prev.push_back('('); generate(left + 1, right, n, prev); prev.pop_back(); } if (left > right) { prev.push_back(')'); generate(left, right + 1, n, prev); } } };
[Leetcode] 22- Generate Parentheses
标签:
原文地址:http://blog.csdn.net/algorithmengine/article/details/43195147