InterviewHubPRO
Section Overview
Q35

Question 35 of 100

Part 4: Stacks, Queues & Monotonic Stacks (29 - 36)

35%
DSA Patterns (Multi-Lang)•Part 4: Stacks, Queues & Monotonic Stacks (29 - 36)

Generate Parentheses.

In Simple Words: Backtracking with two counters:

  1. Add ( if open < n.
  2. Add ) if close < open (never allow closing bracket without an open pair).
  • Time: $O(\frac{4^n}{\sqrt{n}})$ Catalan Number | Space: $O(N)$
Multi-Language Solutions
Switch tabs or choose All
def generateParenthesis(n: int) -> list[str]:
    res = []
    def backtrack(open_c, close_c, curr):
        if len(curr) == 2 * n:
            res.append(curr)
            return
        if open_c < n:
            backtrack(open_c + 1, close_c, curr + '(')
        if close_c < open_c:
            backtrack(open_c, close_c + 1, curr + ')')
    backtrack(0, 0, "")
    return res