Backtracking Flashcards
(6 cards)
What is the pattern and when is it used?
Explores all possibilities, backtracks when invalid.
Use Case: Combinatorial problems, permutations. Example: [Generate Parentheses]. Action: Verbalize use case aloud.
What are the key steps?
- Choose option, recurse.
- Explore valid paths.
- Backtrack if invalid, undo choice.
Action: Explain steps for [Generate Parentheses] aloud.
How does it apply to [Generate Parentheses]?
- Problem: Generate valid parentheses combinations.
- Approach: Recursively add open/close, backtrack if invalid.
- Action: Verbalize solution logic aloud.
What are the complexity and gotchas?
Complexity: Time: O(4^n), Space: O(n).
Gotchas: Invalid combinations, stack overflow.
Action: List edge cases for [Generate Parentheses] aloud.
Provide a code example.
```python
from typing import List
def generate_parenthesis(n: int) -> List[str]:
result: List[str] = []
def backtrack(current: str, open_count: int, close_count: int) -> None:
if len(current) == 2 * n:
result.append(current)
return
if open_count < n:
backtrack(current + ‘(‘, open_count + 1, close_count)
if close_count < open_count:
backtrack(current + ‘)’, open_count, close_count + 1)
backtrack(‘’, 0, 0)
return result
~~~
Visual