我有输入数组A.
A[0], A[1], ... , A[N-1]
Run Code Online (Sandbox Code Playgroud)
我希望函数Max(T,A)返回B代表A在大小T所在的前一个移动窗口上的最大值
B[i+T] = Max(A[i], A[i+T])
Run Code Online (Sandbox Code Playgroud)
通过使用最大堆来跟踪当前移动窗口A [i]到A [i + T]的最大值,该算法产生O(N log(T))最坏情况.
我想知道有更好的算法吗?也许是O(N)算法