可能重复:
remove duplicate elements in an array in O(n) in C/C++
如何从数组中删除重复的元素?
array [ ] = {1,2,3,4,5,1,2,4,9,0,0}
array [ ] = {0,1,2,3,4,5,9}
答案 0 :(得分:6)
使用您喜欢的排序算法对数组进行排序。
遍历数组并消除重复项 - 如果某个值与前一个值相同,请继续前进,直到获得新值然后将其复制回来。
答案 1 :(得分:1)
使用哈希表并将每个元素存储到哈希表中。这样您就可以删除重复项。这将为您提供O(n)复杂性,但您必须添加哈希表支持。
答案 2 :(得分:1)
假设你有一个整数数组,并且你知道它们的确切界限,你可以创建一个查找表,在输入上单次传递(如果你必须收缩空间则使用位向量)然后生成数组通过查询表单次传递的唯一条目。
对于非常具体的问题,这将是一个非常具体的解决方案,但它可以满足您的要求。
答案 3 :(得分:0)
memset(index,0,sizeof(index));
for (int i=0; i<len(array); ++i)
index[array[i]] = 1;
memset(array,0,sizeof(array));
for (int i=0,int j=0; i<len(index); ++i)
if (index[i]) array[j++] = i;