假设我有两个数组:
a=[10 21 50 70 100 120];
b=[18 91];
我想匹配 a 和 b 中距离最近且在 10 个单位以内的(单个)元素。
结果:
idxa=[1 2 3 4 5 6]
idxb=[2 5]
匹配元素共享相同的编号。
我很困惑,因为我不确定如何确保(例如)18 与 21 而不是 10 匹配,因为它们都满足彼此相差在 10 个单位以内的要求。此外,我想在多个(最多 8 个)列表中执行此操作,并且代码变得过于复杂,我觉得我缺少一个简单的解决方案。我不担心效率,因为列表的长度很小。
谢谢!
最佳答案
对于小型阵列,这可以通过蛮力完成:
(1) 迭代两个数组中较小的,然后是较大的数组
(2) 跟踪“The Closest Match So Far”CMSF
(3) 如果找到更好的匹配,更新CMSF
(4) 当到达列表末尾时,如果CMSF <= 10 保留它,否则忽略此项(它没有匹配项)
关于algorithm - 在多个数组中查找最近的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15045607/