【发布时间】:2010-08-30 08:08:42
【问题描述】:
可能重复:
How to make elements of vector unique? (remove non adjacent duplicates)
是否有任何标准算法作为 STL 算法的一部分提供,可以在保留顺序的同时从数组中删除重复项。例如,如果我在删除重复项后有一个类似int a[] = {2,1,3,1,4,2}; 的数组,它应该是a[] = {2,1,3,4};。我不能使用std::unique,因为数组没有排序。其他解决方案,例如将其插入 std::set 我失去了顺序,因为元素将被排序。是否有任何其他算法组合我可以使用或者我必须自己编写代码?
【问题讨论】:
-
这在算法上效率很低,你知道的。你可以在 O(N^2) 中使用 O(1) 内存,或者我认为在 O(N * log N) 中使用 O(N) 内存。
-
@GMan:如果你同时进行桶排序 O(2^32) 个桶,你可以在 O(n) 内完成。