两个子阵列的元素之间的最大绝对差异

时间:2017-01-11 04:40:23

标签: algorithm

给定一个数组。整数K将数组分成两个子数组。 diffK定义为max({A[0], A[1],....A[K]})- max({A[K+1],A[K+2],...A[n-1]})。返回diifK的最大绝对值。时间复杂度必须为O(n),最大空间为complexity O(n)

1 个答案:

答案 0 :(得分:4)

直接通过数组构建一个“辅助”数组,可以跟踪通过给定索引看到的最大值。 (因此,对于任何给定的Khelper[K] = max({A[0], A[1],....A[K]})。)

然后,在通过数组的单个传递向后中,您可以跟踪从给定索引向前看的最大值(max({A[K+1],A[K+2],...A[n-1]}),其中K是索引) ,并将其与该索引处的上述“helper”数组的值进行比较。跟踪您在同一索引处看到的两个值之间的最大差异,并返回结果。