Нам дан массив из n элементов и целое число k. Предположим, мы хотим переместить окно длиной k по массиву, сообщая о наибольшем значении, содержащемся в каждом окне. Например, для массива
15 10 9 16 20 14 13
При длине окна 4 мы должны вывести
[15 10 9 16] 20 14 13 ---> Output 16
15 [10 9 16 20] 14 13 ---> Output 20
15 10 [ 9 16 20 14] 13 ---> Output 20
15 10 9 [16 20 14 13] ---> Output 20
Таким образом, результат будет
16 20 20 20
. Я подходил к проблеме, отслеживая максимальный элемент окна в каждой точке, но столкнулся с проблемой, когда самый большой элемент выскользнул из окна. В тот момент я не мог придумать быстрого способа выяснить, какой из оставшихся элементов наибольший.
Кто-нибудь знает эффективный алгоритм для решения этой проблемы?