Учитывая массив целых чисел A[1...n-1]
, где N
длина массива A. Построить массив B
таким образом, что B[i] = min(A[i], A[i+1], ..., A[i+K-1])
, где K
будет дан. Массив B будет иметь N-K + 1 элемент.Построить массив с из существующего массива
Мы можем решить проблему с использованием мини-кучи. Построить мини-кучу для k элементов - O (k). Для каждого следующего элемента удалите первый элемент и вставьте новый элемент и heapify.
Поэтому худшем случае, время - O ((п-к + 1) * к) + O (к) Space - O (к)
Можем ли мы сделать это лучше?
Возможно, это поможет: http://stackoverflow.com/a/11044634/1400768 – nhahtdh