从大小为N的数组中选择K元素,使得子数组中最小和最大元素之间的差异最小

时间:2013-10-21 16:35:06

标签: xcode algorithm arrays

如何从数组中选择K元素,使得子数组中最小元素和最大元素之间的差异最小

示例:给定数组

     100 200 20 10 30 32 35 50 60 28 18
     k=4

各种可能的结果

    10 18 20 28
    max-min = 28-10 = 18

    28 30 32 35
    max-min = 35-28 = 7

  So, we will select [28 30 32 35] as the subarray

1 个答案:

答案 0 :(得分:3)

让数组为[1..N]。解决。然后选择子阵列a [i],a [i + 1],...,a [i + K - 1],i = 1,...,N - K + 1,这样a [i + K - 1] - a [i]是最小的。您可以在线性时间内完成此操作。由于排序需要O(nlogn),因此算法的总执行时间为O(nlogn)