过滤具有多个条件的列表的最佳选择算法?

时间:2014-11-06 05:46:40

标签: ios objective-c algorithm

我正在使用Objective-C编程,但语言无关的答案在这里可以正常工作。我有一个包含许多属性的对象列表,包括创建日期和用户GUID。我正在寻找一种合理有效的方法来过滤此列表,以便仅包含每个用户ID的最新条目。有没有比O(n ^ 2)好的解决方案?我想我可以检查每个元素,如果它是我尚未处理的ID,抓住所有具有相同ID的对象,找到最新的,并将该值存储在其他地方,但这似乎是一种天真的方法。

1 个答案:

答案 0 :(得分:1)

如果您只想击败O(n ^ 2),那么您可以按(ID,时间)排序,然后迭代,第一次看到ID时,将其附加到某个答案列表中。这将是O(n log n)。

或者,创建一个Hash表并遍历列表。检查项目是否在地图中(按ID),如果是,则将当前项目替换为当前项目。对于完美的散列函数,这将是O(n)。