【问题标题】:Algorithm for max distance in elements元素中最大距离的算法
【发布时间】:2023-04-11 03:43:01
【问题描述】:

我找到了一种解决方案,您可以在数组中找到最大和最小元素,这可以通过一个循环完成,并且只需要运行 n 次,然后减去它们以找到最大距离。 我的解决方案对吗?? 还有比这更好的解决方案吗?

【问题讨论】:

  • 是的,您的解决方案很棒,但它针对的是一个完全不同的问题:您正在寻找最大差异,而他们正在寻找最小差异。
  • 当您不发布(伪)代码时,任何人应该如何评价您的改进?
  • 元素排序了吗?
  • 一种简单的方法,1-使用快速排序对元素进行排序,2-最小距离为 A[1] - A[0] 但确保元素至少为2 个元素

标签: algorithm


【解决方案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)

最小距离

您问题中的伪代码用于查找数组中任何对之间的 最小 距离。更有效的解决方案是:

  1. 按升序对数组A 进行排序。 O(nlogn)
  2. 遍历排序后的数组并比较所有相邻对,同时跟踪最小距离。 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多