在每个列表中给定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时间?或记录时间
克里斯
答案 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)。