我想要一个蛮力算法。
任何人都有任何想法?
答案 0 :(得分:4)
如果元素已排序,那么您可能只需要按顺序比较每对项目: [1,3,6,7,28] - > 7-6给出最小距离
为了强制它,我想你可以从每个其他值(n * n-1)中减去每个值,并跟踪哪一对最小。您需要确保不从自身中减去相同的元素,但具有相同值的元素应该是成对的。
答案 1 :(得分:3)
如果你想暴力破解它,只需循环遍历每对元素:
min = infinity
for i=1 to n-1
for j = i+1 to n
if abs(a[i]-a[j]) < min
min = abs(a[i]-a[j])
这需要O(n^2)
次。您可以通过首先对列表进行排序来实现O(n log n)
时间:
sort(a)
min = infinity
for i = 1 to n-1
if abs(a[i+1]-a[i]) < min
min = abs(a[i+1]-a[i])