我有一组数据:
offerId : Variants
101: (1)
102: (2,3)
103: (4)
104: (1,2,5)
105: (3)
106: (4,6)
我想在互相排斥的不同组中提供ID。与上述数据一样,我将获得两个相互排斥的群体:
[101,102,104,105] corresponding to [(1),(2,3),(1,2,5),(3)]
[103, 106] corresponding to [(4),(4,6)]
如何实现这一点,伪代码或逻辑任何东西都将受到赞赏。
P.S我用GO语言编写代码。但是,任何语言的答案都将受到赞赏。
提前致谢。
答案 0 :(得分:0)
您需要Disjoint-set数据结构。另一个名字 - Union-find数据结构。
您可以在Wiki页面中看到伪代码,并在众多来源中看到真正的实现。 Arbitrary C# example。
在你的情况下,你还需要检查组的交集(集合?)。如果两个组的交集不为空,则对这些组进行联合操作。