求解一道算法题。

aceding 2011-10-16 03:49:02
有一万个电话号码,11位的,其中只有两个是相同的,如何找出相同的两个电话号码,求解!时间复杂度越小越好!
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vincent_Song 2011-10-16
  • 打赏
  • 举报
回复
先排序,然后比较依次遍历相邻两个的内容,直到找到相邻两个相同即可。好比8,3,5,2,6,10,8,先进行排序(降序、升序都行)然后得到2,3,5,6,8,8,10,开始用2和3比较,不相同用3和4比较,不相同以此类推,用8和8比较,相同,保存位置,得到数据推出。

希望能够帮到你!
陈思有 2011-10-16
  • 打赏
  • 举报
回复
新手表示压力大
qq120848369 2011-10-16
  • 打赏
  • 举报
回复
11位,一共需要10^11个bits,算一算:11.7G的内存量。

我们把号段分成12个,每个号段不到1G的内存量。

创建一个文件,扩展到12G,到来一个号码,根据其号段,内存映射不同的偏移量的1G内存,检查相应的bit位即可。
神武纪 2011-10-16
  • 打赏
  • 举报
回复
先排序,再查找会不会好点?~~~
wb_james 2011-10-16
  • 打赏
  • 举报
回复
普通查找O(n^2)
快排,堆排,(nlog(n))
bitmap思想O(n)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧