Menu
CoddyTech

Redundant Connection

中等并查集图python iconjava iconcpp iconc iconjs icon+10

一个网络最初是一棵树:有 n 个节点,编号从 1 到 n,由 n-1 条无向边连接,且没有环。然后,在两个没有直接相连的节点之间又添加了一条边,因此列表 edges 现在包含 n 条边,并且恰好有一个环。

返回一条可以移除的边,使其余 n-1 条边重新构成一棵树。如果有多条边都符合条件,则返回 edges 中最后出现的那条,按其中原样写出的 [a, b] 形式返回。

函数

findRedundantConnection(edges: integer-2d-array) → integer-array
edgesinteger-2d-array
这 n 条无向边,每条边都是一对节点 [a, b],节点编号从 1
返回值integer-array
在 edges 中最后出现的循环边,写法与其中一致

约束条件

  • 3 ≤ n ≤ 5000,其中 n = edges.length
  • edges[i] = [a, b],其中 1 ≤ a, b ≤ n 且 a ≠ b
  • 没有任何一条边会以任一方向重复出现。
  • 这些边连接所有 n 个节点,并且恰好构成一个环。

示例

输入
edges = [[1, 2], [1, 3], [2, 3]]
输出
[2, 3]
解释
这三条边组成三角形 1、2、3,因此移除其中任意一条都会留下一个树。[2, 3] 在列表中排在最后。
challenge icon

进阶

如果这些边是有向的,而且原图是一棵有根树,那么当新增的边导致某个节点有两个父节点时,你会删除哪条边?

重置代码
def findRedundantConnection(edges):
    # 在这里编写代码

测试 #1

测试 #2

参数

edges = [[1, 2], [1, 3], [2, 3]]

预期输出

[2, 3]