在O(n)时间</number>中从容器中删除<number>元素

时间:2013-02-20 00:28:44

标签: c++ algorithm complexity-theory time-complexity

假设您想要实现一个模板化函数,它将两个迭代器带到一个容器,一个整数描述“容器中的元素是否在容器中小于&lt;整数&gt;次,然后从容器中弹出它”。这样的声明可能是:

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

是否可以在O(n)时间内编写这样的函数?通常使用哪些程序来执行这样的任务?

1 个答案:

答案 0 :(得分:0)

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