论坛首页 入门技术论坛

【探讨】给你1G内存,如何从3000万个手机号码中检索出你要的号码,要求每秒检索>1000次

浏览 6169 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-11-22  
二分法,时间复杂度 log N
0 请登录后投票
   发表时间:2007-11-22  
抛出异常的爱 写道
试试这个:
static long a = new long[20000000000]

插入: a[tel]=1;
删除: a[tel]=0;
查寻: if(a[tel]==0){return 不存在}
改:  查寻+删除+插入

每个手机号放入对应的位置


用数组下标作为手机号码想法不错,不过你的实现会把内存撑爆,不信你试试看!提示:手机号码是11位的,将来可能12位
0 请登录后投票
   发表时间:2007-11-22  
ddandyy 写道
不知道LZ在想的是什么

不过肯定没有你想的那么复杂

要求每秒1000次?  那肯定是并发了.....

既然是并发  那么单次的时间有多少又有什么关系呢  肯定会在1秒以内出来


过滤手机号码是一个很正常的事情,每秒1000次是最底要求,如果你知道了这个算法就不复杂了,可惜你我就是不知道,所以让大伙出出方案撒!
0 请登录后投票
   发表时间:2007-11-22  
不说了  删除
0 请登录后投票
   发表时间:2007-11-22  
ddandyy 写道
不说了  删除
做人要厚道
0 请登录后投票
   发表时间:2007-11-23  
gqf2008 写道
抛出异常的爱 写道
试试这个:
static long a = new long[20000000000]

插入: a[tel]=1;
删除: a[tel]=0;
查寻: if(a[tel]==0){return 不存在}
改:  查寻+删除+插入

每个手机号放入对应的位置


用数组下标作为手机号码想法不错,不过你的实现会把内存撑爆,不信你试试看!提示:手机号码是11位的,将来可能12位


10的11次方。。。。。。13XXXXX的13可以去掉了。
0 请登录后投票
   发表时间:2007-11-23  
抛出异常的爱 写道
gqf2008 写道
抛出异常的爱 写道
试试这个:
static long a = new long[20000000000]

插入: a[tel]=1;
删除: a[tel]=0;
查寻: if(a[tel]==0){return 不存在}
改:  查寻+删除+插入

每个手机号放入对应的位置


用数组下标作为手机号码想法不错,不过你的实现会把内存撑爆,不信你试试看!提示:手机号码是11位的,将来可能12位


10的11次方。。。。。。13XXXXX的13可以去掉了。
呵呵 15号段早就出来了,以后可能还有好多号段出来,不过你的想法已经离成功不远了,我想应该可以把号码按号段分开来实现比较合理,例如可以把前面7位和后面4为分开出来,这样应该就可以实现了
0 请登录后投票
   发表时间:2007-11-23  
13是表示手机
下几位是表示运营公司
再下几位是表示发行区域
最后几位才是人
所以只有最后几位是有必要放进数组中的
其它的可以压缩。。。。到4位以内
0 请登录后投票
   发表时间:2007-11-23  
抛出异常的爱 写道
13是表示手机
下几位是表示运营公司
再下几位是表示发行区域
最后几位才是人
所以只有最后几位是有必要放进数组中的
其它的可以压缩。。。。到4位以内
正解,怎么解决我想大家都明白了
0 请登录后投票
   发表时间:2007-11-23  
=================结贴=================
0 请登录后投票
论坛首页 入门技术版

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