【发布时间】:2015-04-15 05:06:42
【问题描述】:
我有一个包含超过 2000 万个值的流,这些值带有相应的键(>1000 万个)。键链接到一个或多个值(最大 50000),例如:
... (key1, val1), (key2,val2), (key1, val3), (key2, val4), (key1, val6), (key3,val5)...
我将此流存储如下:
key1 : val1, val3, val6
key2 : val2, val4
key3 : val5
每次我在流中收到一个新值时,我首先检查这个值是否出现在其对应键的列表中:
- 如果不是,我将值添加到列表的末尾。
- 如果该值已经在最后一个位置的列表中,那么我做 什么都没有。
- 最后,如果值已经在列表中,但不在最后 地方,我发射一面旗帜。
我的问题是:执行此过程的更有效的数据结构或工具是什么(我希望尽可能快地启动标志)。我想到了一个与链表关联的哈希表(正如我在示例中给出的那样),但是每次添加值时检查所有链表听起来并不正确。回想一下,我确实需要这个 LAST 值的概念。
谢谢
【问题讨论】:
-
您当前的算法不清楚。请添加一个示例,说明您将如何处理一个(或多个)或三个用例。