Удалить & lt; номер & gt; элементов из контейнера за O (n) время

Предположим, вы хотите реализовать шаблонную функцию, которая переносит в контейнер два итератора и целое число, которое описывает, «если элемент в контейнере находится в контейнере меньше, чем < integer> times, затем извлеките его из контейнера. «Такое объявление может быть:

template <class theIter>
theIter pop_um(theIter start, theIter end, int fewerThan);

Можно ли написать такую ​​функцию за O (n) раз? Какие процедуры обычно используются для выполнения такой задачи?

2

Решение

Bucket / radix сортирует ваши данные (от начального до конечного итераторов), чтобы начать в линейное время. Затем просканируйте ваш новый отсортированный список за линейное время, отслеживая, когда элементы меняются, и делая его легким для поиска. Линейное время O (2n) = O (n). Занимает много памяти для сегментов, хотя в зависимости от того, как вы сортируете.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector