一尘不染

是否有可能找到两个在O(n)时间内差异最小的数字

algorithm

给定一个未排序的整数数组,并且无需对数组中的数字做任何假设:
是否有可能找到两个在O(n)时间上差异最小的数字?

编辑: 两个数字a,b之差定义为abs(a-b)


阅读 189

收藏
2020-07-28

共1个答案

一尘不染

在列表中找到最小和最大元素。最小最大差异将最小。

如果您正在寻找非负差异,那么这当然至少与检查数组是否具有两个相同的元素一样困难。这称为元素唯一性问题,无需任何其他假设(例如限制整数的大小,允许进行除比较以外的其他运算)需要>
= n log
n时间。这是找到最接近的一对点的一维情况。

2020-07-28