Generate parentheses

class Solution:
    def __init__(self):
        self.res = []
        self.path = []
    def backtrack(self, left, right, n):
        if left == right == n:
            self.res.append("".join(self.path))

        if left < n:
            self.path.append('(')
            self.backtrack(left + 1, right, n)
            self.path.pop()
        if left > right:
            self.path.append(')')
            self.backtrack(left, right + 1, n)
            self.path.pop()

    def generateParenthesis(self, n: int) -> List[str]:
        self.backtrack(0, 0, n)

        return self.res

Generate Parentheses

Difficulty: Medium


Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

 

Example 1:

Input: n = 3
Output: ["((()))","(()())","(())()","()(())","()()()"]

Example 2:

Input: n = 1
Output: ["()"]

 

Constraints:

  • 1 <= n <= 8