【騰訊面試題】兔子試毒月伴飛魚關(guān)注共 1648字,需瀏覽 4分鐘 ·2021-10-01 09:40 大家好,我是牛牛,經(jīng)過了忙碌的一周,終于盼來了周五。今天給大家分享一道有趣有料的算法題,希望能讓大家開啟周末的好心情。01故事起源有1000瓶藥水,其中有一瓶是毒藥,只要喝上一滴,一天之后就必死無疑。現(xiàn)在提供一批兔子來試毒,那我們怎么花最少的兔子、最少的時間,找出這瓶毒藥呢?02條件分析喝一滴就死掉,換句話說,那一瓶藥水是可以給多只兔子喝的。要花最少的兔子,又要花最少的時間,看起來像是時間與空間的決策,不如我們先來簡化問題:1.只追求時間,最快速度找出藥水。2.只追求空間,節(jié)約兔子,時間可以慢慢來。這樣從簡單角度輔助思考一下,也能為我們深入思考打下基礎(chǔ)。03花式試毒追求時間簡單來說,就是堆兔子。直接拿1000只兔子試毒,一只兔子負(fù)責(zé)一瓶藥水。結(jié)果自然是耗用1000只兔子,1天出結(jié)果。這樣的優(yōu)勢比較明顯,就是快;缺點也明顯:使用的兔子太多,占資源,不環(huán)保。追求空間如果我們出于環(huán)??紤],節(jié)約兔子,那么可以考慮用2分。第一輪就分為500瓶毒藥為一組,先放一只兔子,每瓶藥水喝一滴,這樣可以排除500瓶。如果活著,就繼續(xù)用這只兔子,如果死了,就補充兔子。我們按最壞情況來算:每次都要消耗掉一只兔子。下一輪250瓶,這樣循環(huán)迭代,1000->500->250->125->63->32->16->8->4->2->110個箭頭,就是10次,也就是用了10天。這樣我們只用了10只兔子,很節(jié)約,不過就是等得太心慌。中庸之道把前兩種方式綜合一下,我們可以不用1000只兔子,也可以不用等足足10天。把2分,變成多分。比如,9只兔子的話,每次能分10份,每輪補充兔子到9只,這樣試完1000瓶藥水,只需要3天,1000->100->10->1。2只兔子的話,就是3份,1000->333->111->37->(12,12,13)->(4,4,5)->(2,2,1) -> 1規(guī)律也很明顯,天數(shù)為d,分a份,則兔子是a-1只,藥水N瓶,那么d等于以a為底N的對數(shù)(logaN)。比如,當(dāng)耗用2只兔子時,a為3,算出來正好是7天,和我們剛才的推算是一樣的。計算機思維還有沒有更好的辦法呢?時間短,效率高。當(dāng)然有,因為一次可以喝多瓶藥水,那么我們可以用10只兔子,模擬出1024種情況。給藥水編號,從1-1000,兔子也編上號,1-10號,1000瓶藥水編號,都轉(zhuǎn)換為二進制編號,1就是000 000 0001,1000就是111 110 1000。這種情況下,第幾位為1,就讓對應(yīng)的兔子喝一滴藥水。由于編號都是獨一無二的,所以最后根據(jù)死掉的兔子,反過來組合一下,就是藥水的編號。如此一來,10只兔子,只花1天,就能試毒成功。無論空間,還是時間,都是最快的。04兔兔復(fù)盤如果你是使用1000只兔子試毒,那么說明你對時間很敏感;如果是二分法,那你一定是個節(jié)約成本的大師;如果使用多分法,說明你懂得在空間和時間上,取一個均衡,深諳中庸之道;如果你能很快想到二進制模擬,那么你一定是對計算機01存儲非常熟悉!是選擇時間?或空間?或?qū)で笃胶猓恳嗷蚴怯修k法另辟蹊徑,兩者兼?zhèn)洌肯嘈烹S著思維的循序漸進,你會有所感悟。今天分享的這道題不光有趣,還是大廠熱門面試題,看起來似乎很簡單,但其實是有巧思在其中的,它考察了你的思維方式和邏輯能力,希望大家在閱讀過程中有所收獲!END關(guān)注公眾號,免費領(lǐng)取學(xué)習(xí)資料你好,我是牛牛,普通二本畢業(yè)。本科進騰訊,去過外企,肝過頭條。目前回騰訊擔(dān)任高級工程師。想來騰訊的朋友,可以找我內(nèi)推哦!點個“贊”和“在看”鼓勵一下嘛~ 瀏覽 31點贊 評論 收藏 分享 手機掃一掃分享分享 舉報 評論圖片表情視頻評價全部評論推薦 【騰訊面試題】兔子試毒苦逼的碼農(nóng)0騰訊面試出的一道題:兔子試毒飛天小牛肉0【騰訊面試題】熊出沒苦逼的碼農(nóng)0我試毒回來了!大家好,我是小林。 每年過春節(jié),我都會帶家里人去看春節(jié)檔的電影,今年也不例外,跟大家聊聊觀影感受。 初一和初二先后帶家里人看了《紅毯先生》、《飛馳人生 2》,豆瓣現(xiàn)在也開分了,《紅毯先生》豆瓣 6.9 分,《...【騰訊面試題】猴子分桃苦逼的碼農(nóng)0一道騰訊產(chǎn)品面試題產(chǎn)品劉0城主大人請試毒 (2023)城主大人請試毒 (2023)0騰訊面試題:青蛙跳跳跳苦逼的碼農(nóng)0騰訊面試題:青蛙跳跳跳程序員的時光0騰訊兩面涼經(jīng)面試題分享JAVA爛豬皮0點贊 評論 收藏 分享 手機掃一掃分享分享 舉報