首页 >后端开发 >Python教程 >如何在整数列表中查找最接近的数字?

如何在整数列表中查找最接近的数字?

DDD
DDD原创
2024-11-09 05:11:01875浏览

How to Find the Closest Number in a List of Integers?

在整数列表中查找最接近给定值的数字

假设我们有一个整数列表并想要确定哪个数字最接近给定值。我们可以采用各种方法来实现这一点。

对未排序列表使用 min() 函数:

如果我们不能保证列表已排序,我们可以利用内置 min() 函数。它使用键函数选择与指定数字距离最小的元素。

>>> min(myList, key=lambda x:abs(x-myNumber))
4

此方法可以在 O(n) 时间复杂度内有效找到最接近的数字。

对排序列表使用二分法:

如果列表已经排序,或者我们愿意排序一次,我们可以采用二分法。该方法将时间复杂度降低到O(log n)。但是,检查列表是否已排序需要 O(n),而排序本身则需要 O(n log n)。

>>> low, high = 0, len(myList) - 1
>>> while low <= high:
>>>     mid = (low + high) // 2
>>>     if myList[mid] == myNumber:
>>>         return myList[mid]
>>>     elif myList[mid] > myNumber:
>>>         high = mid - 1
>>>     else:
>>>         low = mid + 1
>>>     if low > high:
>>>         closest = myList[high] if abs(myList[high] - myNumber) < abs(myList[low] - myNumber) else myList[low]
>>>         return closest

通过选择最接近的元素,此方法为排序列表提供了最佳解决方案.

以上是如何在整数列表中查找最接近的数字?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn