https://leetcode.com/problems/generate-parentheses/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* @param {number} n
* @return {string[]}
*/
const generateParenthesis = (n) => {
let ans = []
backtrack(ans, n)
return ans
}

const backtrack = (ans, n, open = 0, close = 0, s = '') => {
if (s.length === n * 2) {
ans.push(s)
return
}
if (open < n) {
backtrack(ans, n, open + 1, close, s + '(')
}
if (close < open) {
backtrack(ans, n, open, close + 1, s + ')')
}
}