1. 程式人生 > >Google研發面試題

Google研發面試題

今天很開心找到了一個很不錯的研發面試題,很考驗臨時反應能力,特地拿出來和大家分享一下此題以及自己做該題的心得體會!!!

 題目:

總共有12個外表都一樣的金屬球,其中有11個球的重量是相同的,1個球的重量可能比其他11個球要重,也可能比較其他11個球輕,這個球稱之為異常球,問:如何利用一個天平來稱重三次找出這個異常球?

 

 

下面來講解我的思路,希望大家拿出筆和紙。

首先我們將12個球分為三份,將球依次排好序號為1-12,如下:

A組選手:1,2,3,4         B組選手:5,6,7,8         C組選手:9,10,11,12

任意拿出兩組放在天平兩邊,下面我們就以拿出A,B比較。

【1】如果A == B,因為只有1個異常球,而A == B,則說明C組(9,10,11,12)異常球:

  緊接著從C組(異常組中)取出3個球,從正常組A或者B組中也取出3個球來進行比較,例如我們取出B組6,7,8【左邊】    vs  C組9,10,11 【右邊】

  如果天平平衡,則C組剩下的球就為異常球,這樣就比較2次;

  如果天平不平衡,那就知道了異常球是重還是輕,

    那就從右邊的三個球中再任取兩個,放入天平中:

      如果天平平衡,剩下的球即為異常球;這樣就比較2次

      如果不平衡,則可根據上面已經得出的結論:異常球是重還是輕的結論判斷哪一個是異常球,這樣比較3次

 

【2】如果A != B,因為只有1個異常球,則說明C組為標準球,異常球在A組或者B組中

  此時要分兩種情況來分析:

  (1)左側重右側輕即1,2,3,4 > 5,6,7,8;(2)左側輕右側重即1,2,3,4 < 5,6,7,8

========》

  (1)左側重右側輕即1,2,3,4 > 5,6,7,8 【異常球可能是1,2,3,4重,或者5,6,7,8輕】

      然後我們比較1,6,7,8 和5,9,10,11 ------>(9,10,11是正常球標準球)

  如果平衡,就可以說明,1,6,7,8和5 是標準球,結合上一個比較結果,可以得出的是異常球為2,3,4且為重球,這樣從2,3,4裡面找兩個球比對一下即可,這樣就比較3次;

  如果不平衡:

      左側重:則1為異常重球,這樣就比較2次

      左側輕:異常球是6,7,8且為輕球,從三個球中選出兩個再次稱一次選擇輕的即可,這樣就比較3次

 

 

(2)左側輕右側重即1,2,3,4 < 5,6,7,8 解法同上面差不多,這個留給大家思考(思路一樣,比較簡單)

 

上面就是關於這個題目,我的思路和解法,歡迎大家指正!!!寫完正好凌晨一點鐘,晚上嘍!

&n