我有一个看起来像这样的数组:
[[320, 80], [300, 70], [300, 80], [270, 75], [260, 70], [280, 70]]
这只是一个片段,实际数组是 338 大。
我试图根据一些输入在数组中找到下一个逻辑元素。因此,例如,我输入两个数字,即315, 80
下一个合乎逻辑的数字是320, 80
如果您想找到一个更大的条目。
我不想将逻辑关联到最接近的,因为这取决于您想要更大或更小的元素。所以我想按逻辑我的意思是“在所需方向上最接近”
作为附加要求,第二个数字应尽量接近输入值,或者第一个数字应尽量接近原始数字。
当涉及到诸如275, 70
,我想找到下一个最小的情况时,我遇到了问题。那应该是260, 70
,但我的实现一直在挑选280, 70
我当前的实现添加了两个数字之间的差异,并寻找可能的最小差异。我不确定如何执行指示。
Python 示例(虽然我真的在寻找与语言无关的解决方案)
elements = [ [320, 80],
[300, 70],
[300, 80],
[270, 75],
[260, 70],
[280, 70]
]
target = [275, 70]
bestMatch = []
bestDifference = 0
for e in elements:
currentDifference = abs((target[0] - e[0]) - (target[1] - e[1]))
if not bestMatch or currentDifference < bestDifference:
bestMatch = e
bestDifference = currentDifference
print bestMatch