论坛首页 入门技术论坛

水木上看到的一个面试题,讨论很激烈

浏览 57005 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-05-31  
kangxdw 写道
其实我很想问一句,为什么没有人考虑用树来做。。。
lvl1:null
lvl2:{1,2,3,4,5,6,7,8,9,0}
lvl3:同上
lvln:同上

然后遍历,形成连接。
遍历完后,找到任意两点之间没有连接的。。。就是咯。

你们觉得呢?


好方法!
0 请登录后投票
   发表时间:2011-05-31  
sea0108 写道
kangxdw 写道
其实我很想问一句,为什么没有人考虑用树来做。。。
lvl1:null
lvl2:{1,2,3,4,5,6,7,8,9,0}
lvl3:同上
lvln:同上

然后遍历,形成连接。
遍历完后,找到任意两点之间没有连接的。。。就是咯。

你们觉得呢?


好方法!

你确定扫描一遍可以?
0 请登录后投票
   发表时间:2011-05-31  
喜羊羊与灰太狼 写道
nianien 写道
supertaxi 写道
扫描一遍后的结果呢...不得放在内存中啊

我觉得给指定内存是用来迷惑人的,几个字节的内存足矣

那你给说下你的想法吧,看看你用多少个字节,谢谢


几个字节确实可以,就看你一次读取多少来判断。
0 请登录后投票
   发表时间:2011-05-31  
只需要循环一次,求和、求积,然后根据公式可以求得该数
0 请登录后投票
   发表时间:2011-06-01   最后修改:2011-06-01
哎, 布隆过滤器得了, 搞得这么复杂。 否则很难有解~

内存不够? 开个10m mmap, 哈哈哈

要么使用haffman算法, 量化? 不过我也没有想明白怎么建数据结构。
0 请登录后投票
   发表时间:2011-06-01  
不就是要建立一棵键树吗?每个节点就是一个0-9的数字,第一层可以是个位,最后一层就是最高位,比如11层就可以表示100亿个各不相同数字了。
0 请登录后投票
   发表时间:2011-06-01  
xielingjiang 写道
不就是要建立一棵键树吗?每个节点就是一个0-9的数字,第一层可以是个位,最后一层就是最高位,比如11层就可以表示100亿个各不相同数字了。

   哥们儿,10M内存,放不下能表示40亿个整数的键树。
0 请登录后投票
   发表时间:2011-06-02  
鄙视哪些不考虑内存、不考虑结构的同学。
一组数据,在内存一定的时候,如果用bitset都没办法表示,那其他结构更没有办法表达完了。
0 请登录后投票
   发表时间:2011-06-02  
nianien 写道
sea0108 写道
kangxdw 写道
其实我很想问一句,为什么没有人考虑用树来做。。。
lvl1:null
lvl2:{1,2,3,4,5,6,7,8,9,0}
lvl3:同上
lvln:同上

然后遍历,形成连接。
遍历完后,找到任意两点之间没有连接的。。。就是咯。

你们觉得呢?


好方法!

你确定扫描一遍可以?


文件是扫描一片即可。后续的操作都是在内存里面对这个“树”进行操作。
0 请登录后投票
   发表时间:2011-06-02   最后修改:2011-06-02
lnaigg 写道

能用文件,那这题还有难度么。


  你去看看BitSet的实现再看看我这个解决思路, 我只是把BitSet简化并且使用文件保存而已。 
对了,你知道什么是BitSet或者布隆过滤吗, 布隆过滤和BitSet有什么联系?  
  这些经典的算法和结构都不能用10M内存解决这个问题, 如果你能用10M内存不用文件解决,我立马膜拜之!
不要啥也不明白就像傻帽样出来丢
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics