Generate Parentheses Problem & Solution
See the generate parentheses problem on LeetCode.
C++ Solution
#pragma GCC optimize("Ofast")
static const int _=[](){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);return 0;}();
using namespace std;
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> result;
help(0, "", n, result);
return result;
}
private:
void help(int sum, string str, int n, vector<string>& result) {
if (str.size() > n * 2) {
return;
}
if (sum == 0 && str.size() == n * 2) {
result.push_back(str);
return;
}
if (sum < n) {
help(sum + 1, str + '(', n, result);
}
if (sum > 0) {
help(sum - 1, str + ')', n, result);
}
}
};