我有一个整数对的向量,看起来像这样:
pair[0] = {1, 2}
pair[1] = {5, 7}
pair[2] = {9, 3}
pair[3] = {4, 6}
pair[4] = {8, 6}
pair[5] = {1, 3}
pair[6] = {9, 6}
我需要将任何一对中的数字组合在一起。
例如,数字1与2和3配对,因此它们属于一个组。 3也与9配对,9与6配对,6配4,所以它们也需要成为第一组的一部分。
5和7不与第一组中的任何其他数字重叠,因此需要将它们放入自己的组中。
结果向量需要类似于:
group[0] = {1, 2, 3, 4, 6, 8, 9}
group[1] = {5, 7}
我想要这个,我希望这个有效。谢谢。
答案 0 :(得分:1)
直接应用Disjoint-set Data Structure可以解决这个问题。
浏览对列表,并为找到的每个数值创建一个单例集。然后再次遍历对,在每对的两个元素表示的集合上执行 union 操作。
鉴于文章中描述的正确表示,这可以在线性时间和空间中非常有效地完成。