CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

把数组里重复数字去掉

楼主buffet001(巴菲)2006-03-16 23:01:55 在 C/C++ / C语言 提问

一个面试题,说有一个数组t[100],存放了1-99之间的数字,让你用效率较高的代码,把重复数字去掉.  
  例如数组{1,2,2,2,3,5,6,6}变成{1,2,3,5,6}.  
   
  说有一个数组t[100],存放了1-99之间的数字,让你用效率较高的代码,把重复数字去掉.  
  例如数组{1,2,2,2,3,5,6,6}变成{1,2,3,5,6}.  
   
  我的方法是再开一个数组flag[99]初始化为0,然后对t[100]做一次遍历,每次以t[i]为下标,查询flag[t[i]],if   ==   0,flag[t[i]]   +=   1;   if   >   0,表明t[i]在1-99之间已经出现过了,使之   =   -1排除掉。  
   
  还有一个想法是对t[100]快排一次,然后遍历。  
  if   (t[i]   ==   t[i+1])  
  t[i]   =   -1;  
  然后i++  
   
  不知各位还有什么方法? 问题点数:20、回复次数:9Top

1 楼qhfu(改个名字)回复于 2006-03-16 23:12:43 得分 5

如果需要排序,可以考虑用基数排序Top

2 楼digifish(df)回复于 2006-03-17 00:28:38 得分 5

楼主第一种方法其实就是哈希表法。Top

3 楼skywoody()回复于 2006-03-17 00:30:07 得分 5

sort(t,t+100);  
  int   *newEnd   =   unique(t,t+100);  
  t   ---   newEnd   之间就是你要的数组了Top

4 楼skywoody()回复于 2006-03-17 00:32:15 得分 0

不过其实这道题用hash效率是最高的  
  如果数字不多的话其实可以考虑用STL的set  
  去掉重复数字,完成排序,而且比较省空间Top

5 楼Rick_ang(东方未名)回复于 2006-03-17 00:44:16 得分 3

桶排序Top

6 楼ugg(逸学堂(exuetang.net))回复于 2006-03-17 09:34:30 得分 0

使用STL行不?  
  sort对数组进行排序,unique删除数组内重复数字Top

7 楼ddddh(叶君临)回复于 2006-03-17 09:47:39 得分 0

@   skywoody  
   
  用set的话,你每插入一个,set都会用new,或者某个其他的allocator,来分配一个节点,这个分配内存的动作,我个人感觉,会比较慢。:-)Top

8 楼yleiou(单刀匹马)回复于 2006-03-17 09:54:39 得分 2

桶排序感觉很好Top

9 楼greenteanet(扎扎实实打基础,保持一颗平常心。)回复于 2006-03-17 10:01:18 得分 0

使用基数排序Top

相关问题

  • 去掉数组中的重复值
  • 一个数组,怎样去掉数组里面重复的项?
  • 我想遍历一个数组,将重复数据去掉
  • shell中如何去掉数组里重复的变量
  • 我想遍历一个数组,将重复数据去掉 是个string[]的数组
  • 如何去掉一个字符串数组里的重复的值?
  • perl的菜鸟问题:如何去掉数组里的重复元素?
  • 将字符串数组中重复的字符串去掉该怎么做?
  • 如何去掉数组中的重复值,再现等,达。答案正确马上给分,决不食言!!
  • 如何从一个二维数组中挑选重复数字,然后输出到文件中

关键词

  • 排序
  • 数字
  • 数组
  • 去掉
  • 重复
  • 效率
  • 方法
  • flag
  • set

得分解答快速导航

  • 帖主:buffet001
  • qhfu
  • digifish
  • skywoody
  • Rick_ang
  • yleiou

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo