昨天中午吃完午饭,和Jason大佬两个人静静地坐在河边小憩。
两个人都不说话,挺尴尬的。此时,刚好看到某群里在讨论一道面试算法题,我就把手机递了过去让大佬端详一下。
普通青年解答
我先解答,
可以使用二分法的手段找到这一瓶有毒的水。
1000瓶水先分成2组各500瓶,并将其中一组内500瓶水混合,混合后让小白鼠喝下,小白鼠死了就说明有毒的水在这组中,反之,在另一组中,以此方法往下推。可得:
1000瓶水时(剩10只),500瓶水时(剩9只),250瓶水时(剩8只),125瓶水时(剩7只),63瓶水时(剩6只),32瓶水时(剩5只),16瓶水时(剩4只),8瓶水时(剩3只),4瓶水时(剩2只),2瓶水(剩1只)时各消耗一只小白鼠,在只剩2瓶水时,还有1只小白鼠可用,所以成功找出有毒的水。
这种题目还有很多变种的题目,例如10个鸡蛋测从多高的地方掉下来不会碎之类的题目。
二X青年回答
说完第一种解答方式之后,我灵光一闪,想到一种只消耗一只老鼠的办法,
既然有无数只试管,那么我就用枚举法!
抓一只小白鼠,试完1000瓶水的的试管不就行了?
大神青年回答
Jason大佬表示,这么玩没意思,加个条件。
小白鼠喝下毒水之后,不会马上有反应,但会在1个小时内毒发身亡。
“这下我完蛋了,按照方法一需要10个小时才能得出结果,按照方法二可能要用1000小时才能得出结果!!! 解决方案:
拿10个空瓶编号为(10)(9)(8)(7)(6)(5)(4)(3)(2)(1)。
将二进制的第一位(最右边的为第一位)为1的瓶子每瓶取一滴药水装入编号为(1)的瓶子,将二进制的第二位为1的瓶子每瓶取一滴药水装入编号为(2)的瓶子,以此类推。
最后用10只老鼠编号为10,9,8,7,6,5,4,3,2,1喝下对应编号瓶子的药水,一小时后检查老鼠的存活情况。
存活的老鼠表示0,死亡的老鼠表示1,可以得到一个10位的二进制数。
假如仅1号鼠死亡,其余老鼠都存活,则说明1号水有毒,
假如10,9,8,7,6,4号鼠死亡,其余老鼠都存活,则说明1000号水有毒。
在理想情况下,10只小白鼠同时喝下10只试管的水,只要1个小时就能得到结果。
真的懂了么?
假如第10,8,6,4,2号鼠死亡,其余存活那么几号水有毒呢?
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(文末获取!)
温馨提示:篇幅有限,已打包文件夹,获取方式在“文末”!!!
二、Python必备开发工具
三、精品Python学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、Python练习题
检查学习结果。
七、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
这份完整版的Python全套学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费
】
Python资料、技术、课程、解答、咨询也可以直接点击下面名片,
添加官方客服斯琪
↓