列表中的类似元素

时间:2011-06-08 20:26:25

标签: list numbers

在每个列表中给定N个M个数字列表时,我们必须从每个组中找到一个元素 每一对ai aj都给了| ai-aj |尽可能小。

例如 我们有3个列表

{12,16,67,43}

{7,17,68,48}

{14,15,77,54}

为了尽量减少结果,我们必须选择 列表1中的第16位 列表2中的第17位 列表3中的第15位 所以

|16-17|=1
|16-15|=1
|17-15|=2 

所以我们的结果是:2

如何快速解决?在N * M时间?或记录时间

克里斯

1 个答案:

答案 0 :(得分:0)

如果使用线性搜索,一个匹配的复杂度为O(N * M)(即,对于集合j中的每个元素,对集合i中最相似的项目执行线性搜索,并选择最小的那些结果。

如果您先对每个集进行排序,则会得到(至少)O(N log N)+ O(M log M)进行排序,以及O(M log N)进行搜索(其中N是数字)集合i中的元素,以及集合j)中元素的数量。如果你一起浏览这两个集合,你可以将它减少到组合搜索的O(N + M)。