搜来的百度面试题

从别人博客里拷来的,转载过来只是方便以后跳槽的时候多点准备
第一题,介绍熟悉的排序算法。
由于对这个不是特别了解,之前看百度百科介绍过,记下来了几种,说了三种吧,然后gg狂问时间复杂度。感觉百度很关注这个,真实狂问时间复杂度啊
第二题:已经排序两个正整数数组,等长,如何找到两个数组里面全部数的中位数。
想了一会,想到直接查找每个数组的中间数,然后比较,如果不等的话,向相应的方向移动数组,每次移动一位。gg问了下时间复杂度,然后让我找到复杂度更低的算法。后来想到了二分查找!其实这道题的关键就是二分查找!第一反映没到位,不过想到二分查找时,却没搞明白查找终止的条件。这个应该给自己减了不少分。
第三题  两个文件各存50亿个url,求两个文件里同时出现的url。
说了句最简单的方法,逐个查找,逐个匹配,就像字符串匹配那样。后来gg说如果考虑内存应该怎么办,其实这道题我之前见过,但是gg也没描述清楚吧,应该还有内存是多少,每个url多少字节之类的信息,不过我也没细问,想了一会,说用hash表,之前看面经的时候说用hash表,就表达了我的意思,但是具体如何操作,我就云里雾里的说了一通,因为我着实对hash表不是很熟悉,从来没用过,最多算是了解吧。
第四题  gg说是经典的字符串反转问题
我说简单的方法,开辟一个新字符b,b=a[last],a[1]=b,a[last]=b,然后依次类推。
后来说,句子里面的单词反转,这个我答的很糟糕,因为之前看过一个类似的题,就按照之前的思路想了下去,后来发现是不节约空间的,复杂度很高。
第五题  字典查找问题,给定一个英文字典,给出12个不重复的字母,如果字典里的单词由这12个字母或12字母里面的某几个字母组成,则把此单词跳出来。
给出的第一个思路是用不同的质数代替不同单词,然后算每个单词的成绩,和12字母所有可能组合单词所对应的质数乘积,最后用质数成绩匹配。  
后来我又提出可以用排序组成。gg果断说还是用排序吧。
我说每个字母按照一定顺序排列,12个字母按照相同的顺序排序,然后逐个匹配,期间gg说了不考虑字母重复问题,使得问题简单不少。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值