在整数列表中查找最接近给定值的数字
假设我们有一个整数列表并想要确定哪个数字最接近给定值。我们可以采用各种方法来实现这一点。
对未排序列表使用 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中文网其他相关文章!