Problem Statement could be found @https://leetcode.com/problems/generate-parentheses/
Approach -
1.Take a char array of size 2*n.
2. At every value of n try putting '(' or ')'. Reduce count of open brackets and closed brackets
3. If both open brackets & close brackets count reduce to 0,then it means we have got one combination
4. A condition to take care is - never count of open brackets is greater than close brackets as it would result in wrong code formation
Code Snippet-
class Solution {
public:
vector<string> retVec;
void helper(int open ,int close, int n, char *x,int index){
if ((open == 0) && (close ==0)){
retVec.push_back(x);
return;
}
//results in wrong formation
if (open > close){
return;
}
if (open > 0){
x[index] = '(';
helper((open-1),close, n, x, index+1);
}
if (close > 0){
x[index] = ')';
helper(open,close-1, n, x, index+1);
}
}
vector<string> generateParenthesis(int n) {
char *ptr = new char[2*n+1];
ptr[2*n] = 0;
helper(n,n,n,ptr,0);
return retVec;
}
};
Approach -
1.Take a char array of size 2*n.
2. At every value of n try putting '(' or ')'. Reduce count of open brackets and closed brackets
3. If both open brackets & close brackets count reduce to 0,then it means we have got one combination
4. A condition to take care is - never count of open brackets is greater than close brackets as it would result in wrong code formation
Code Snippet-
class Solution {
public:
vector<string> retVec;
void helper(int open ,int close, int n, char *x,int index){
if ((open == 0) && (close ==0)){
retVec.push_back(x);
return;
}
//results in wrong formation
if (open > close){
return;
}
if (open > 0){
x[index] = '(';
helper((open-1),close, n, x, index+1);
}
if (close > 0){
x[index] = ')';
helper(open,close-1, n, x, index+1);
}
}
vector<string> generateParenthesis(int n) {
char *ptr = new char[2*n+1];
ptr[2*n] = 0;
helper(n,n,n,ptr,0);
return retVec;
}
};