C++实例(去除数组中的重复数字)

C++实例(去除数组中的重复数字),第1张

C++实例(去除数组中的重复数字),第2张

题目: 有一个数组t[100],存放了1~99之间的数字,用效率较高的代码把重复数字去掉。例如数组{1,2,2,2,3,5,6,6}变成{1,2,3,5,6}。
  ××××××××××××××××××××××××××××××××××
  申请标志数组
  此题重复的数字可能不只一个,上述求和的方法不行了。因为是高效率,我们可以采用空间换时间的策略来解决。
  设立访问标志数字,初始化为0,访问到N时将标志数字的第N个元素置为N
  最后遍历该数组,若标志数组中对应值为非0,则顺序存储该数字于原数组中,最后返回去除重复数字后的有效数的个数
  int RemoveRep(int array[], int n)
  {
  int *arrayflag = (int *)malloc(n*sizeof(int));
  int left = 0, i = 0;
  while(i 0)
  array[array[i]] = -array[array[i]];
  else
  array[-array[i]] = -array[-array[i]];
  }
  for(i=0;i  {
  if(array[i] < 0) //根据标志顺序保存出现过的值
  array[left++] = i;
  }
  return left;
  }
  ××××××××××××××××××××××××××××××××××
  void main(void)
  {
  int t[100];
  int i,j,left;
  for(i=0;i  {
  j = rand()%99+1;
  t[i] = j;
  printf("%d ",t[i]);
  if(i%10 == 9)
  printf("\n");
  }
  //left = RemoveRep(t, 100);
  left = SignedRemoveRep(t, 100);
  for(i=0;i

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++实例(去除数组中的重复数字)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情