Задайте массив arr[] из N целых чисел и еще одно целое число k ≤ N. Задача состоит в том, чтобы найти максимальный элемент каждого подмассива размером k. (с использованием стека временной сложности O{n} )
Следующий больший элемент — это элемент в наборе чисел в данном массиве. поиск большего элемента во всех формах наборов занимает немного времени, поэтому существует несколько подходов.
Подход 1: использование манипулирования стеком
стек работает с временной сложностью O(n) над набором входных данных.
элемент 0 помещается поверх стека в начале только для ссылки
до тех пор, пока все n не получат vanish, стек проверяет, не является ли стек пустым или элемент на вершине стека меньше, чем текущий элемент в массиве. если это так... это выскакивает!!!
пока остальные элементы в массиве, как в «n — k», берут следующие элементы и рассматривают следующий элемент в кадре. (немного ugk .. все в порядке!) просто, если следующий элемент меньше, нажмите его!
Подход #простой: сортируйте каждый подмассив и учитывайте последний элемент.
Временная сложность: O(nlogn) + O(n) ~ O(nlogn)
ПРИМЕЧАНИЕ. Использование вектора из старых классов C++ STL может облегчить вашу жизнь :)
массив вектор‹Int› = {10,20,30,40,50};
cout‹‹”\n Максимальный элемент =”‹‹*max_element(array.begin(),array.end());
Ссылки:
КОД: