恐怖级算法题目一【据说是百度的面试题】
2009-12-14 20:54
246 查看
恐怖级算法题目一【据说是百度的面试题】 日期:2008-06-03 14:24
分享/收藏
给你a、b两个文件,各存放50亿条url,每条url各占用64字节,内存限制是4G,让你找出a、b文件共同的url。
============================
对于此题,若用算法求解,关键在于内存不够大。而解决办法,必然需要通过预处理,将文件分割。但本题的技巧,也在于文件的分割,一个合理的分割,可以使后续的算法非常简单。
下述算法由他人给出:
1,内存放不到,可能需要借助外存
(1),读取文件,计算HASH,按HASH值分段放入不同的文件,文件数可以比较多,两个文件的URL,分开不同的文件放(a1,a2,...,b1,b2,...),保存时可以把HASH值也保存进去,避免再次计算HASH值
(2),对每一个HASH段,读出两个文件中的一个,比如a1,对HASH值有冲突的放一个连表里,然后读b1文件,取HASH值和URL,如果HASH值在a1中有,则进一步判断URL是否相同。
注:由于a1和b1的哈希段跟其他均不相同,故,a1只需要跟b1做比较,即可。
==============
另,如果只要结果,不需要算法,那借助于数据库,抑或也可:
建个数据库表,就一个主键,
然后把URL全部insert into table 。
插入失败报重复错误的,就是了。
分享/收藏
给你a、b两个文件,各存放50亿条url,每条url各占用64字节,内存限制是4G,让你找出a、b文件共同的url。
============================
对于此题,若用算法求解,关键在于内存不够大。而解决办法,必然需要通过预处理,将文件分割。但本题的技巧,也在于文件的分割,一个合理的分割,可以使后续的算法非常简单。
下述算法由他人给出:
1,内存放不到,可能需要借助外存
(1),读取文件,计算HASH,按HASH值分段放入不同的文件,文件数可以比较多,两个文件的URL,分开不同的文件放(a1,a2,...,b1,b2,...),保存时可以把HASH值也保存进去,避免再次计算HASH值
(2),对每一个HASH段,读出两个文件中的一个,比如a1,对HASH值有冲突的放一个连表里,然后读b1文件,取HASH值和URL,如果HASH值在a1中有,则进一步判断URL是否相同。
注:由于a1和b1的哈希段跟其他均不相同,故,a1只需要跟b1做比较,即可。
==============
另,如果只要结果,不需要算法,那借助于数据库,抑或也可:
建个数据库表,就一个主键,
然后把URL全部insert into table 。
插入失败报重复错误的,就是了。
相关文章推荐
- 据说是百度的面试题-"灵魂算法" (算法思路分析及程序模拟)
- 恐怖级算法二【据说百度面试题】
- 【面试题】2018 年,百度 Java 后端面试题目!
- 一道百度算法面试题讲解
- [每日练习]百度算法面试题
- 【白话经典算法系列之十二】数组中只出现1次的两个数字(百度面试题)
- 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 据说是百度SA的面试题
- 经典面试题(一)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 微软等数据结构+算法面试100题(18)--百度面试题
- 经典面试题(一)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 经典面试题(三)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 百度一道关于算法的面试题目
- 百度最新面试题:现在有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来
- 经典面试题(二)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 趣味算法:国王和100个囚犯(据说是腾讯的面试题)
- 面试题:百度二面(题目看来的)
- 经典面试题(四)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 算法-跑道与马-百度面试题
- 经典面试题(二)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯