Redundant Connection
Learn how to solve the 'Redundant Connection' problem. This detailed resource details brute force and optimized approaches.
Problem Statement
In this problem, a tree is an undirected graph that is connected and has no cycles.
You are given a graph that started as a tree with n nodes labeled from 1 to n, with one additional edge added. The added edge has two different vertices chosen from 1 to n, and was not an edge that already existed. The graph is represented as an array edges of length n where edges[i] = [ai, bi] indicates that there is an undirected edge between nodes ai and bi.
Return an edge that can be removed so that the resulting graph is a tree of n nodes. If there are multiple answers, return the answer that occurs last in the input.
Write a function findRedundantConnection(edges: List[List[int]]) -> List[int].
- •n == len(edges)
- •3 <= n <= 1000
- •edges[i].length == 2
- •1 <= ai < bi <= n
- •ai != bi
Examples
edges = [[1,2],[1,3],[2,3]]
[2,3]
Removing edge [2,3] breaks the cycle 1-2-3-1, leaving a valid tree 1-2 and 1-3.
edges = [[1,2],[2,3],[3,4],[1,4],[1,5]]
[1,4]
The cycle is 1-2-3-4-1. The last edge in the input that is part of this cycle is [1,4].
Need a Hint?
Edge Cases to Watch
- Empty list or null input variables
- Single item lists/arrays
- Extremely large input bounds causing integer or stack overflow
Ready to Solve?
Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.