删除<数字>在O(n)时间内来自容器的元素的数量

Remove <number> of elements from a container in O(n) time

本文关键字:元素 gt 数字 lt 删除 时间      更新时间:2023-10-16

假设您想要实现一个模板化函数,该函数将两个迭代器带到一个容器,并将一个整数描述为"如果容器中的元素在容器中的次数少于<integer>,则将其从容器中弹出"。这样的声明可以是:

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

有可能在O(n)时间内写出这样的函数吗?执行这样的任务通常使用哪些过程?

Bucket/radix对数据进行排序(从开始到结束迭代器),以便在线性时间内开始。然后在线性时间内扫描你的新排序列表,跟踪元素何时变化,并使其易于弹出。线性时间。O(2n)=O(n)。存储桶需要大量RAM,但这取决于您的排序方式。