Clone Graph – Solution & Complexity

Solution Walkthrough

  1. Step 1: Recognize the Pattern

    The key pattern is: DFS copies each vertex and adjacency row once. Identify the state and invariant before coding.

  2. Step 2: Build the Algorithm

    Advance one state transition at a time. Mark or update state before exploring dependent work.

  3. Step 3: Check Edge Cases

    Test empty or minimal input, skewed shapes, duplicates where allowed, and impossible outcomes.

  4. Step 4: Solution and Complexity

    Time: O(V + E). Space: O(V + E).

    def clone_graph(adjacency: list[list[int]]) -> list[list[int]]:
        clone = [[] for _ in adjacency]
        seen = set()
        def visit(node):
            if node in seen: return
            seen.add(node)
            clone[node] = adjacency[node].copy()
            for neighbor in adjacency[node]:
                visit(neighbor - 1)
        if adjacency: visit(0)
        return clone

FAQ