第4组百度面试题
2010年3道百度面试题[相信,你懂其中的含金量]
1.a~z包括大小写与0~9组成的N个数
用最快的方式把其中重复的元素挑出来。
2.已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器,
使得它构造0和1的概率均为1/2;构造一个发生器,使得它构造1、2、3的概率均为1/3;...,
构造一个发生器,使得它构造1、2、3、...n的概率均为1/n,要求复杂度最低。
3.有10个文件,每个文件1G,
每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。
要求按照query的频度排序.
1.解答:
对每个“数”计算hash,如果hash ==1 说明出现了,否则置hash=1
2.解答:
参见http://blog.csdn.net/yahohi/article/details/7902546
00:p*p
01:p*(1-p)
10:(1-p)*p
11:(1-p)*(1-p)
00和11舍弃,01代表0 10代表1 ,这样产生0和1等概率
n=3 001 010 100
n=4 0001 0010 0100 1000
n=5 0011 0101 0110 1100 1010 1001 六个选5个即可
3.解答:
对于每个文件中的query,计算hash,分成10个或者更多个桶
对于每个桶里面的query,计算访问频度,可以用hash_set(key = query value = frequency)并排序(快排,堆排),
然后用多路归并排序合并这些桶