List 列表中的类似元素

List 列表中的类似元素,list,numbers,List,Numbers,对于给定的N个列表,每个列表中有M个数字,我们必须从每个组中找到一个元素,例如 每一对ai aj都尽可能地小 比如说 我们有三张名单 {12,16,67,43} {7,17,68,48} {14,15,77,54} 为了使结果最小化,我们必须选择 清单1中的第16位 名单2的第17位 清单3中的15号 所以 所以我们的结果是:2 如何快速解决?在N*M时间?或者记录一些时间 Chris如果使用线性搜索,一个匹配的复杂度为O(N*M)(即,对于集合j中的每个元素,从集合i中对最相似的项进行线

对于给定的N个列表,每个列表中有M个数字,我们必须从每个组中找到一个元素,例如 每一对ai aj都尽可能地小

比如说 我们有三张名单

{12,16,67,43}

{7,17,68,48}

{14,15,77,54}
为了使结果最小化,我们必须选择 清单1中的第16位 名单2的第17位 清单3中的15号 所以

所以我们的结果是:2

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


Chris

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

如果你先对每个集合进行排序,你会得到(至少)O(N logn)+O(M logm)用于排序,O(M logn)用于搜索(其中N是集合i中的元素数,M是集合j中的元素数)。如果你一起遍历这两个集合,你可能会将其减少到O(N+M)用于组合搜索

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