是否有任何方法可以删除O(n)中C / C ++中就位的数组中的重复元素?假设元素a[5]={1,2,2,3,4} 然后是结果数组应该包含{1,2,3,4} 该解决方案可以使用两个for循环来实现,但我相信应该是O(n ^ 2)。
a[5]={1,2,2,3,4}
{1,2,3,4}
当且仅当源数组被排序时,这可以在线性时间内完成:
std::unique(a, a + 5); //Returns a pointer to the new logical end of a.
否则,您必须首先进行排序,这是(99.999%的时间)n lg n。
n lg n