最接近但不相等,即两者间的绝对差是最小的
python
from random import randrange
seq = [randrange(10**10) for i in range(100)]
dd = float('inf')
for x in seq:
for y in seq:
if x == y :
continue
d = abs(x - y)
if d < dd:
xx, yy, dd = x, y ,d
print xx,yy
复杂度平方级
seq.sort()
dd = float('inf')
for i in range(len(seq) - 1):
x, y = seq[i], seq[i + 1]
if x == y :
continue
d = abs(x - y)
if d < dd:
xx, yy dd = x, y ,d
print xx,yy
排序通常是一个线性对数级操作,已排序的序列中最接近的两个数必然是相邻的
这篇博客介绍了如何在Python中寻找一个数字列表中两个最接近但不相等的数。首先展示了平方级复杂度的解决方案,然后优化为线性对数级复杂度,通过先排序再遍历的方式找到相邻的两个绝对差最小的数。
11万+

被折叠的 条评论
为什么被折叠?



