微软100题(84)百度面试题_随机发生器

第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)并排序(快排,堆排),
然后用多路归并排序合并这些桶

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值