【发布时间】:2011-04-28 18:59:27
【问题描述】:
我有一个对象对列表。对象可以按任意顺序出现在对中。找到相同对象之间的所有包(即允许重复的集合)的最有效算法(和实现?)是什么。出于我的目的,可以假定对象引用是指针、名称或一些类似的方便、简短、有用的表示。各个对是可识别的。在对的两个部分中没有具有相同对象的对。
所以给定一个对的列表(Oid 是一个对象引用;Pid 是一个对引用)
O1-P1-O2
O3-P2-O4
O5-P3-O1
O1-P4-O2
O2-P5-O1
O1-P6-O5
O7-P7-O8
应该返回:
P1;P4;P5 and P3;P6
【问题讨论】:
-
你试过什么?一个简单的字典/哈希直方图(由数组支持)可以正常工作,或者多地图也可以正常工作。总是在稳定有序的对上进行索引。
-
我认为这取决于实施限制。也就是说,如果我们处理的是字符串,而不是可以直接处理三个组件的对象。理想情况下,您只需对对象进行规范化,这样您就可以对列表进行排序(例如,如果最低值的对象首先出现)并从那里开始。
-
我在这个问题中强调了效率,因为检查行李必须在内部循环中完成;需要在大名单上完成;并且列表中与检查直接相关的部分将经常更改。
-
这是我希望我能接受多个答案的场合之一。所有的答案都非常有用;非常有帮助,相关且发人深省。谢谢。
标签: performance algorithm list bag