面試演算法題

2021-06-22 18:37:48 字數 785 閱讀 5719

前幾天,一好友去筆試,有一題:現在有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...