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

引子:

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

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

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

取值概率对比 结果1 结果0
2次调用a()函数 P 1-P
结果1 P P*P P(1-P)
结果0 1-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

你可能感兴趣的:(数据结构,面试相关)