Skip to the content.

22. Generate Parentheses

代码

class Solution {
public:
  std::vector<std::string> generateParenthesis(int n) {
    int left = 0, right = 0;
    std::vector<std::string> rtn;
    helper(rtn, "", n, left, right);
    return rtn;
  }
  void helper(std::vector<std::string> &vecs, std::string tmp, int n, int left,
              int right) {
    if (left > n || right > n || left < right) {
      return;
    } else if (left == n && right == n) {
      vecs.push_back(tmp);
    } else if (left == right) {
      helper(vecs, tmp + "(", n, left + 1, right);
    } else if (left > right) {
      helper(vecs, tmp + "(", n, left + 1, right);
      helper(vecs, tmp + ")", n, left, right + 1);
    }
  }
};

结果

Success

Runtime: 8 ms, faster than 37.79% of C++ online submissions for Generate Parentheses.

Memory Usage: 15 MB, less than 23.47% of C++ online submissions for Generate Parentheses.