一个很老的百度算法问题,莫明白 求高手!

十一文 2011-01-04 05:23:42

面试的时候遇到的
看过网上的,但是还是没面试好


有一大堆数
里面有一个数重复了2次
找出这个数





这堆数字是稀疏的!






------求一个好的解决方案---

...全文
129 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
skinnymonkey 2011-01-05
  • 打赏
  • 举报
回复
Hashtable
吴明治 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xming4321 的回复:]
如果内存 有限了

怎么办

比如只能用几十m的内存了?
[/Quote]

那就不用hash 直接记数吧 时间换空间了
十一文 2011-01-05
  • 打赏
  • 举报
回复

如果内存 有限了

怎么办

比如只能用几十m的内存了?
吴明治 2011-01-04
  • 打赏
  • 举报
回复
最简单的 一大堆数(n个)用一个数组存储 用一个二维数组存放非零元及出现次数 一次遍历遇到非零元就加入二维数组或加1

这道题既然是稀疏的 那么结果二元数组的规模应该不大 复杂度最低接近o(n)

排序的话最低也要o(2n)了吧

就想叫yoko 2011-01-04
  • 打赏
  • 举报
回复
恩, 是[Quote=引用 4 楼 hairetz 的回复:]
既然稀疏,就不能用位图了。

直接用hash即可。
[/Quote]
shadowlsj 2011-01-04
  • 打赏
  • 举报
回复
HASH?~
  • 打赏
  • 举报
回复
既然稀疏,就不能用位图了。

直接用hash即可。
無_1024 2011-01-04
  • 打赏
  • 举报
回复
先排序 然后挨着的两个比较相等的话就找到了
Quick(a)
for(int i = 0;i < n-1;i ++ )
{
if(a[i] == a[i+1])
{
x = a[i];
break;
}
}
就想叫yoko 2011-01-04
  • 打赏
  • 举报
回复
位图 ..
jianlang0413 2011-01-04
  • 打赏
  • 举报
回复
这种思维........

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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