给定一个数组。整数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)
答案 0 :(得分:4)
直接通过数组构建一个“辅助”数组,可以跟踪通过给定索引看到的最大值。 (因此,对于任何给定的K
,helper[K] = max({A[0], A[1],....A[K]})
。)
然后,在通过数组的单个传递向后中,您可以跟踪从给定索引向前看的最大值(max({A[K+1],A[K+2],...A[n-1]})
,其中K
是索引) ,并将其与该索引处的上述“helper”数组的值进行比较。跟踪您在同一索引处看到的两个值之间的最大差异,并返回结果。