一尘不染

在数组中找到最接近给定数字的数字

algorithm

我在JavaScript中有一个整数数组,[5,10,15,20,25,30,35] 当给定数字x时,如何在数组中找到最接近该数字的元素?

如果数字超过某个值,但小于下一个数字的一​​半,则选择较小的值;如果数字超过下一个数字的一​​半,则选择较大的值。

例如,7将返回5,但是8将返回10。任何帮助或提示,将不胜感激。我已搜索,找不到解决方案。我敢肯定这很常见。


阅读 917

收藏
2020-07-28

共1个答案

一尘不染

您的示例列表已排序。如果总是这样,请二进制搜索您的电话号码。如果你没有找到确切的数字,通过检查各地,其中人数的两个数字让二进制搜索结束关闭
是并返回最接近的一次。当边缘数字大于或小于目标数字时要小心

如果列表并非总是排序,则遍历列表,跟踪最大数字<=目标数字,最小数字> =目标数字。返回最接近目标的那个。

在这两种解决方案中,例如,如果您要在[1,3]中搜索2,则都需要决定偏爱哪一方。

2020-07-28