Задайте массив 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());

Ссылки:

https://www.geeksforgeeks.org/sliding-window-maximum-maximum-of-all-subarrays-of-size-k-using-stack-in-time/



КОД:

https://leetcode.com/playground/3n6GLwnQ