Algorithms and Data Structures implemented in JavaScript for beginners, following best practices.
|
|
/**
|
||
|
|
* Problem Statement: Given a number n pairs of parentheses, try to Generate all combinations of valid parentheses;
|
||
|
|
* @param {number} n - number of given parentheses
|
||
|
|
* @return {string[]} res - array that contains all valid parentheses
|
||
|
|
* @see https://leetcode.com/problems/generate-parentheses/
|
||
|
|
*/
|
||
|
|
|
||
|
|
const generateParentheses = (n) => {
|
||
|
|
const res = []
|
||
|
|
|
||
|
|
const solve = (chres, openParenthese, closedParenthese) => {
|
||
|
|
if (openParenthese === n && closedParenthese === n) {
|
||
|
|
res.push(chres)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
if (openParenthese <= n) {
|
||
|
|
solve(chres + '(', openParenthese + 1, closedParenthese)
|
||
|
|
}
|
||
|
|
|
||
|
|
if (closedParenthese < openParenthese) {
|
||
|
|
solve(chres + ')', openParenthese, closedParenthese + 1)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
solve('', 0, 0)
|
||
|
|
|
||
|
|
return res
|
||
|
|
}
|
||
|
|
|
||
|
|
export { generateParentheses }
|