前幾天,一好友去筆試,有一題:現在有1000個蘋果,和10個箱子,如何把這1000個蘋果裝在這10個箱子裡,才能使不管任何數量(1-1000)的蘋果,都能一次給出?
當時,我們都想,出題這人。。。
今天,在想移位的時候,突然想到了,這絕對是二進位制數的變種。
分析:1000個蘋果,最接近1024,轉化為2進製,需要占用10個bit,則從右往左數,第乙個bit位表示1個蘋果,第二個bit位表示2個蘋果,第三個bit位表示4個蘋果,,,第10個bit位表示488個蘋果(512-24)。分別把這些通過放入相同編號的箱子裡。當需要某一數量的蘋果時,檢視這些數量的哪些bit位為1,為1則表示這個bit位代表有蘋果,取出對應編號的箱子即可。
又想起了前幾天看到的筆試題:
有8瓶液體,其中一瓶是毒藥,毒性可使小白鼠飲用後在20小時內陣亡,需要幾隻小白鼠才能在20小時內判斷哪一瓶是毒藥?
分析:給8瓶毒藥編碼:
第一瓶:000
第二瓶:001
第三瓶:010
第四瓶:011
第五瓶:100
第六平:101
第七平:110
第八平:111
只需3只小老鼠
第一只老鼠喝最後bit位為1的,即第2,4,6,8瓶
第二隻老鼠喝中間bit位為1的,即第3,4,7,8瓶
第三隻老鼠喝第一bit位為1的,即第5,6,7,8瓶
如果20小時候,沒有老鼠死亡,則第一瓶有毒,否則:
假設第二隻和第三隻老鼠死亡,把對應位上bit設為1,即110,所以第7瓶有毒。
面試演算法題
1 直方圖矩形最大值 class solution s.push i return res 2 第n個醜數 class solution return res.back 3 lru cache 最近最少使用頁面置換快取器 class lrucache int get int key void set...
某個面試演算法題
援引某人部落格 有乙個整數n,寫乙個函式f n 返回0到n之間出現的 1 的個數。比如f 13 6,現在f 1 1,問下乙個最大的f n n的n是什麼?writed by chszs public void fn int inputval 1000000 int cntforone 0 long c...
面試演算法題3
面試演算法題3 據說是華為筆試題,練習了一下。package src 第一題 假設n個小孩圍成一圈,每次數第m個小孩,該小孩被踢出來,請問當這幫小孩子只剩下乙個人的時候是第幾個人。比如m 3,第一次數到第3個,第二次從第4個開始往下數,轉圈數 寫乙個方法來實現。public class mymeth...