【面试相关】面试算法收集

引子:

老东家要阵亡了,出来碰碰透透气!

1.随机算法:
问题:这么个函数a(), 返回1的概率是P,返回0的概率是1-P;如何实现一个算法,使返回1,0的概率都是50%?

解决:本体主要考察一个应变能力,和思维;其实和纯编程不是特别紧密;但是,头脑灵活的谁不想要呢!!!
先来看一个表格:解题思路就在这个表里(其实是个大家中学都学过的概率题)

取值概率对比结果1结果0
2次调用a()函数P1-P
结果1PP*PP(1-P)
结果01-P(1-P)*P(1-P)*(1-P)

解析:通过两次调用a()函数返回的概率表可以看出,共有4种结果:[1,1],[1,0],[0,1],[0,0],[1,0],[0,1]的概率一样都是(1-P)*P,这里其实和具体的P,1-P都没啥关系。因为题目要设计个算法使返回1,0的概率都是50%。这样可以利用返回结果的特性进行算法设计;即:对于两次调用a()函数这个事件,因为返回[1,0]或[0,1]的概率是50%,返回[1,1],[0,0]的概率也是50%。所以包装下接口使一种概率返回0,另一种返回1即可。

PS:

TIPS:

这题还是有扩展的,构造一个等概率的发生器
比如,条件:a()的返回1,0的概率P和1-P,

设计算法,构造[1,2,3…n],返回返回各个数据概率相同=1/n?

其实套路也类似。见参考2

参考:

参考1

参考2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值