1. /**
    2. * @param {number} n
    3. * @return {string[]}
    4. */
    5. var generateParenthesis = function (n) {
    6. const list = []
    7. const backtrack = (list, temp, l, r) => {
    8. if (temp.length === n * 2) {
    9. list.push(temp.join(''))
    10. return
    11. }
    12. if (l > 0) {
    13. l--
    14. temp.push("(")
    15. backtrack(list, temp, l, r)
    16. temp.pop()
    17. l++
    18. }
    19. if (r > l) {
    20. r--
    21. temp.push(")")
    22. backtrack(list, temp, l, r)
    23. temp.pop()
    24. r++
    25. }
    26. }
    27. backtrack(list, [], n, n)
    28. return list
    29. };