Practice: Redundant Connection

Problem: https://leetcode.com/problems/redundant-connection/

Recognition reminder: you are handed an undirected graph that started life as a tree on n nodes and then had exactly one extra edge added, and you must return that extra edge (if several edges qualify, the one that appears last in the input). A tree on n nodes has exactly n - 1 edges and no cycles, so the one added edge is precisely the edge that closes a cycle. The cue is connectivity over a stream of edges: “which edge joins two nodes that were already connected”. That is the Union-Find shape. Think about processing the edges in the order given, keeping track of which nodes have been merged into the same group so far, and asking of each edge whether its two endpoints are already in the same group before you merge them. The first edge for which the answer is “yes, already connected” is the redundant one, and because you scan in input order it is also the last such edge in the list.

Before you start (the five-beat rhythm)

  1. Your Pattern Card for this week is already written.
  2. Name the pattern aloud and write your approach as a plain-English comment before any code.
  3. Struggle floor: 25 minutes unaided. No hints, no AI, no Discuss tab.
  4. If stuck past the floor, ask the tutor for a hint. Six rungs, one per ask.
  5. Debrief in your commit message before moving to the next problem.

Your target

Fill these in yourself before you look at anyone else’s solution:

Target time complexity:  ____
Target space complexity: ____

Express your target in terms of the number of edges. Recall the cost of a single find/union once you have both path compression and union by rank or size in place, and let that drive the overall bound.

Where your code goes

Write your solution in your own work repo (see getting-started.md), not in this folder. This folder ships only the problem spec and a provided-example test (tests/test_provided.py) so you can check the given cases locally before you submit to LeetCode’s judge. The judge is the oracle; the tutor will not confirm your answer by reading it.

Debrief (paste into your commit message)

1. What pattern did this turn out to be?
2. What was the trigger phrase or input shape that should have made me reach for it?
3. What was the time and space complexity, and what would dominate at scale?
4. What edge case would have broken my first attempt?
5. What would I do differently in three days when I see this cold?