元素中最大距离的算法
Posted
技术标签:
【中文标题】元素中最大距离的算法【英文标题】:Algorithm for max distance in elements 【发布时间】:2016-09-17 08:25:02 【问题描述】:我找到了一种解决方案,您可以在数组中找到最大和最小元素,这可以通过一个循环完成,并且只需要运行 n 次,然后减去它们以找到最大距离。 我的解决方案对吗?? 还有比这更好的解决方案吗?
【问题讨论】:
是的,您的解决方案很棒,但它针对的是一个完全不同的问题:您正在寻找最大差异,而他们正在寻找最小差异。 当您不发布(伪)代码时,任何人应该如何评价您的改进? 元素排序了吗? 一种简单的方法,1-使用快速排序对元素进行排序,2-最小距离为 A[1] - A[0] 但确保元素至少为2 个元素 【参考方案1】:最大距离
对于最大距离,您的解决方案是正确的。没有更好的解决方案,因为您必须遍历数组中的所有元素。时间复杂度为O(n)
。
伪代码:
MaxDistance(A)
min = max = A[0]
for i=1 to n-1
if A[i] < min
min = A[i]
if A[i] > max
max = A[i]
return (max-min)
最小距离
您问题中的伪代码用于查找数组中任何对之间的 最小 距离。更有效的解决方案是:
-
按升序对数组
A
进行排序。 O(nlogn)
遍历排序后的数组并比较所有相邻对,同时跟踪最小距离。 O(n)
伪代码:
MinDistance(A)
sort(A)
min_dist = infinity
for i=1 to n-1
dist = A[i]-A[i-1]
if (min_dist > dist)
min_dist = dist
return min_dist
总时间复杂度:O(nlogn)
【讨论】:
以上是关于元素中最大距离的算法的主要内容,如果未能解决你的问题,请参考以下文章