22. Generate Parentheses - cocoder39/coco39_LC GitHub Wiki
O(2 ^ n)
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
string cur;
helper(res, cur, n, 0, 0);
return res;
}
private:
void helper(vector<string>& res, string& cur, int n, int left, int right) {
if (left == n && right == n) {
res.push_back(cur);
return;
} else if (left < right || left > n || right > n) {
return;
}
cur.push_back('(');
helper(res, cur, n, left + 1, right);
cur.pop_back();
cur.push_back(')');
helper(res, cur, n, left, right + 1);
cur.pop_back();
}
};