删除C中的重复数组元素

时间:2010-11-06 08:05:42

标签: c arrays

  

可能重复:
  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}

4 个答案:

答案 0 :(得分:6)

  1. 使用您喜欢的排序算法对数组进行排序。

  2. 遍历数组并消除重复项 - 如果某个值与前一个值相同,请继续前进,直到获得新值然后将其复制回来。

答案 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;