Удалить <number> элементов из контейнера в O (n) времени

66
8

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

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

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

спросил(а) 2020-03-26T14:06:53+03:00 2 месяца назад
1
Решение
74

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

ответил(а) 2020-03-26T14:19:13.173181+03:00 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема