Я столкнулся с проблемой, когда я хочу написать алгоритм, который может возвращать максимальный элемент каждого последовательного подмассива из k элементов в более крупном массиве и считывать эти максимальные элементы в свой собственный массив, например так:
Given int array = {3, 7, 20, 6, 12, 2, 0, 99, 5, 16}, and int k = 4,
--> creates the array {20, 20, 20, 12, 99, 99, 99}
[because there are 7 consecutive sub-arrays of size 4 within the given array:
{3, 7, 20, 6}, {7, 20, 6, 12}, {20, 6, 12, 2}, ... , {0, 99, 5, 16}
and the max element of these, respectively, is 20, 20, 20, ..., 99 which
are read into the resulting array.
Теперь вот моя проблема: я знаю, как реализовать это со сложностью O(n^2), но хочу сделать это быстрее, чтобы это могло быть O(n), или, если это невозможно, О(nlog(n)). Кто-нибудь знает, есть ли более быстрый способ сделать это, и если да, то как?
O(n^2)
- person Aiden Strydom   schedule 15.02.2016