在O(n)时间复杂度中的算法,以找到阵列中彼此之间具有最大差异的一对nos

wor*_*wiz 2 c algorithm

我得到一个整数数组,不一定排序.我必须找到一对nos,它们之间的差异与阵列中任何另一对nos相比最少.时间效率应为O(n).

ltj*_*jax 7

我很确定你不能为这个问题得到一般的线性时间算法!

但是,由于你有(有界)整数,你可以作弊一点,然后开始使用基数排序对数组进行排序,这是线性时间!然后找到最近的相邻对,再次是线性的.

  • 哦,我想出了一个小小的证明大纲,如果你只依赖于比较,这个问题确实存在于"O(n log n)"中:"唯一性"问题是众所周知的并且在"O(n log n)"中,如果这里的问题是线性的,你也可以检查线性时间的唯一性(最近的一对的距离为0) - QED. (2认同)