一尘不染

如何在C或C ++中删除O(n)数组中的重复元素?

algorithm

是否有任何方法可以删除O(n)中C / C ++中就位的数组中的重复元素?假设元素a[5]={1,2,2,3,4}
然后是结果数组应该包含{1,2,3,4} 该解决方案可以使用两个for循环来实现,但我相信应该是O(n ^ 2)。


阅读 309

收藏
2020-07-28

共1个答案

一尘不染

当且仅当源数组被排序时,这可以在线性时间内完成:

std::unique(a, a + 5); //Returns a pointer to the new logical end of a.

否则,您必须首先进行排序,这是(99.999%的时间)n lg n

2020-07-28