【发布时间】:2013-03-31 05:48:15
【问题描述】:
我有两个对象列表,我想从另一个列表中的一个列表中删除实例。
例如我有以下两个列表,假设每个字母代表对象。
列表列表A = {A, B, C, D, E, F, G, H, I, J}
列表列表B= {D, G, K, P, Z}
现在,显然 listB 在 listA 上也有 D 和 G,所以我希望 listA 是这样的
listA = {A, B, C, E, F, H, I, J}
你们能否建议使用 O(n) 或小于 O(n2) 的解决方案。
我可以遍历这两个列表并通过比较删除重复的实例,但我想要更高效的东西。
【问题讨论】:
-
你能假设列表已经排序了吗?
-
没有。顺序无关紧要!
-
有趣的是,第一个想法似乎总是排序,这当然是非常合理的,因为它允许线性复杂度的解决方案;但是一般来说,甚至不必在元素上存在偏序:)