[討論] Google面試問題

看板Soft_Job作者 (十三)時間11年前 (2014/04/12 02:07), 編輯推噓18(18020)
留言38則, 21人參與, 最新討論串1/19 (看更多)
問題: 假設你有兩顆蛋,然後有一棟100層樓高的大樓。 而蛋的特性有的可能很堅固,堅固到從一百層樓跌下都沒事, 有的可能很脆弱,一樓就可以摔破。 現在你只知道這這兩顆蛋是完全相同的, 你想要知道蛋最高從哪一層樓摔下來不會摔破。 問題是:你要摔幾次才能計算出來? (如果你低於高度摔下蛋,蛋就沒事,如果高於那個樓層,蛋就完蛋) 在這過程你可以摔破蛋。 --- 以下是完全不經大腦思考的 rough 策略,有雷 --- http://ideone.com/B7E85H 策略是: 當我還有兩次機會時,我使用二分法。 當我只剩一次機會時,選擇已經安全的樓層 + 1。  附上此策略的解答 樓層 => 次數 1=>3 2=>4 3=>5 4=>6 5=>7 6=>8 7=>9 8=>10 9=>11 10=>12 11=>13 12=>14 13=>15 14=>16 15=>17 16=>18 17=>19 18=>20 19=>21 20=>22 21=>23 22=>24 23=>25 24=>26 25=>27 26=>28 27=>29 28=>30 29=>31 30=>32 31=>33 32=>34 33=>35 34=>36 35=>37 36=>38 37=>39 38=>40 39=>41 40=>42 41=>43 42=>44 43=>45 44=>46 45=>47 46=>48 47=>49 48=>50 49=>50 50=>3 51=>4 52=>5 53=>6 54=>7 55=>8 56=>9 57=>10 58=>11 59=>12 60=>13 61=>14 62=>15 63=>16 64=>17 65=>18 66=>19 67=>20 68=>21 69=>22 70=>23 71=>24 72=>25 73=>26 74=>26 75=>4 76=>5 77=>6 78=>7 79=>8 80=>9 81=>10 82=>11 83=>12 84=>13 85=>14 86=>15 87=>15 88=>5 89=>6 90=>7 91=>8 92=>9 93=>9 94=>6 95=>7 96=>7 97=>7 98=>7 99=>7 100=>7 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.203.156 ※ 文章網址: http://www.ptt.cc/bbs/Soft_Job/M.1397239669.A.7EE.html

04/12 02:26, , 1F
有點像資料結構中 討論排順序的感覺@@
04/12 02:26, 1F

04/12 02:56, , 2F
2 顆時十層試一次, 一顆時每次加一層, 最多不超過 19 次
04/12 02:56, 2F

04/12 02:57, , 3F
以上是想了二分鐘的想法
04/12 02:57, 3F

04/12 03:02, , 4F
最多14次?
04/12 03:02, 4F

04/12 03:04, , 5F
第一次從14層丟,沒破就+13,沒破再+12...依此遞減
04/12 03:04, 5F

04/12 03:05, , 6F
中間如果一顆破了剩下那顆每次加一層
04/12 03:05, 6F

04/12 03:17, , 7F
推樓上, (我猜)重點是最佳化 worst case, best case 沒差
04/12 03:17, 7F

04/12 03:24, , 8F
sealer答案目前看來最好
04/12 03:24, 8F

04/12 07:56, , 9F
直接從50樓丟,破了再從25,沒破從75。這樣呢?
04/12 07:56, 9F

04/12 08:00, , 10F
我蠢了...
04/12 08:00, 10F

04/12 10:00, , 11F
為什麼是從14層開始丟壓 @@
04/12 10:00, 11F

04/12 10:08, , 12F
我有個笨問題 不是說只有兩顆蛋嗎....
04/12 10:08, 12F

04/12 10:09, , 13F
當我沒問 看錯了XDDD
04/12 10:09, 13F

04/12 10:10, , 14F
to y3k: 蛋砸了不一定會破阿
04/12 10:10, 14F

04/12 10:10, , 15F
慢了一步 當我沒回答
04/12 10:10, 15F

04/12 10:22, , 16F
XD樓上
04/12 10:22, 16F

04/12 10:28, , 17F
uva好像有這題的推廣版 http://ppt.cc/TIjz
04/12 10:28, 17F

04/12 10:33, , 18F
我的作法會同sealer 不過我第二顆是+2上去 因為你不用留蛋XD
04/12 10:33, 18F

04/12 10:34, , 19F
恩....?好像也不對 那sealer大的解應該是最好了吧@@
04/12 10:34, 19F

04/12 10:39, , 20F
那可以討論好解答再去google面試嗎XD
04/12 10:39, 20F

04/12 10:47, , 21F
第一顆從50樓丟下,破了, 就從1測到49,頂多50次
04/12 10:47, 21F

04/12 10:48, , 22F
若沒破,則再從75再測,破了就在51~74之間,沒破就在
04/12 10:48, 22F

04/12 10:48, , 23F
76~100之間, 再對半測,如此類推, 所以, 最多50次
04/12 10:48, 23F

04/12 10:51, , 24F
最少就是100層才破的, 共6 次
04/12 10:51, 24F

04/12 11:06, , 25F
這不就統計的負二項 懂點統計去面試google會不會變得很容易?
04/12 11:06, 25F

04/12 15:15, , 26F
那如果1F摔一次沒破 摔一萬次破了呢
04/12 15:15, 26F

04/12 17:05, , 27F
不確定是不是我題目理解錯誤... 我一次摔會摔N,N+1樓
04/12 17:05, 27F

04/12 17:06, , 28F
之後就是binary search?
04/12 17:06, 28F

04/12 19:18, , 29F
這是好多年的老題了
04/12 19:18, 29F

04/13 16:22, , 30F
推sealer
04/13 16:22, 30F

04/14 00:45, , 31F
其實我一直很好奇這類的問題要怎麼去練,念數學?資結?
04/14 00:45, 31F

04/14 08:30, , 32F
這類問題若要[練]的話 找本題庫拼命[練]就對了 會有效果
04/14 08:30, 32F

04/14 08:31, , 33F
但若要入門的話 還是得修些離散數學 演算法之類的課程 至少
04/14 08:31, 33F

04/14 08:32, , 34F
知道資訊科學方面的知識是如何用數學以及符號來表達
04/14 08:32, 34F

04/20 16:06, , 35F
Binary search?
04/20 16:06, 35F

04/22 14:02, , 36F
sealer法不完全,一旦破了沒必要1層1測,每次+2測即可
04/22 14:02, 36F

04/22 15:05, , 37F
仔細想想沒法每次+2丟...sorry~
04/22 15:05, 37F

05/06 20:58, , 38F
推sealer大
05/06 20:58, 38F
文章代碼(AID): #1JI2zrVk (Soft_Job)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 19 篇):
文章代碼(AID): #1JI2zrVk (Soft_Job)