class Solution {
public List<String> generateParenthesis(int n) {
List<String> parent = new ArrayList<String>();
helper(n, 0, 0, "", parent);
return parent;
}
private void helper(int n, int open, int close, String result, List<String> parent) {
if (result.length() == n * 2) {
parent.add(result);
return;
}
if (open < n) {
helper(n, open + 1, close, result + "(", parent);
}
if (close < open) {
helper(n, open, close + 1, result + ")", parent);
}
}
}
Gotta work on backtracking!
Runtime: 1 ms, faster than 82.37% of Java online submissions for Generate Parentheses.
Memory Usage: 38.8 MB, less than 98.03% of Java online submissions for Generate Parentheses.