Generate Parentheses Problem
Original1/5/26Less than 1 minute
Problem Domain
Parenthesis problem has two variations:
- Valid parentheses: stack solution
- Generate parentheses: backtracking
Properties of a valid parentheses combination
- A valid parentheses combination has the same amount of left parentheses and right parentheses.
- For a valid parentheses combination , the amount of left parentheses must be greater than or equal to the amount of right parentheses in every substring , where .
Q22. Generate Parentheses
class Solution { public List<String> generateParenthesis(int n) { List<String> result = new ArrayList<>(); // 0: left, 1: right int[] parenthesis = new int[2]; StringBuilder path = new StringBuilder(); backtrack(n, parenthesis, path, result); return result; } private void backtrack(int n, int[] parenthesis, StringBuilder path, List<String> result) { if (parenthesis[0] < parenthesis[1] || path.length() > 2 * n) return; if (parenthesis[0] == parenthesis[1] && parenthesis[0] == n) { result.add(path.toString()); return; } parenthesis[0]++; path.append('('); backtrack(n, parenthesis, path, result); path.setLength(path.length() - 1); parenthesis[0]--; parenthesis[1]++; path.append(')'); backtrack(n, parenthesis, path, result); path.setLength(path.length() - 1); parenthesis[1]--; } }
