Нахождение k наибольших элементов в массиве за O (1) раз - PullRequest
0 голосов
/ 22 марта 2019

Возможно ли иметь O (1) временную сложность при поиске k наибольших или наименьших чисел в массиве, создав класс стека со вспомогательной структурой данных для отслеживания k наибольших / наименьших в каждых push() и pop(). Поскольку извлечение равно O (1), вернуть k элементов в методе get

Ответы [ 3 ]

0 голосов
/ 26 марта 2019

вы можете попробовать ссылку ниже, чтобы обсудить поиск наибольшего числа https://www.geeksforgeeks.org/k-largestor-smallest-elements-in-an-array/

0 голосов
/ 29 марта 2019

Да, можно узнать K-й по величине элемент или наименьший элемент по сложности O (1), только если ваш массив находится в отсортированном порядке.

0 голосов
/ 22 марта 2019

Если вы ищете хорошо известную структуру данных, вы можете найти Max-Heap и Min-Heap полезными.Вы можете узнать больше об этом здесь .

Обновление

Поскольку вы обновили свой вопрос с максимальных и минимальных до самых больших k, вы можете выполнить предварительную обработкуваши данные в отсортированный массив, а затем вставить новое значение, используя стратегию сортировки вставки.Затем вы можете сообщить самое большое значение k в O(k) (а если k является постоянным, оно будет в O(1)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...