今天很開心找到了乙個很不錯的研發面試題,很考驗臨時反應能力,特地拿出來和大家分享一下此題以及自己做該題的心得體會!!!
題目:總共有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比較。
如果a == b,因為只有1個異常球,而a == b,則說明c組(9,10,11,12)異常球:
緊接著從c組(異常組中)取出3個球,從正常組a或者b組中也取出3個球來進行比較,例如我們取出b組6,7,8【左邊】
vsc組9,10,11 【右邊】
如果天平平衡,則c組剩下的球就為異常球,這樣就比較2次;
如果天平不平衡,那就知道了異常球是重還是輕,
那就從右邊的三個球中再任取兩個,放入天平中:
如果天平平衡,剩下的球即為異常球;這樣就比較2次
如果不平衡,則可根據上面已經得出的結論:異常球是重還是輕的結論判斷哪乙個是異常球,這樣比較3次
如果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解法同上面差不多【異常球可能是1,2,3,4輕,或者 5,6,7,8重】
然後我們比較2,3,4,5和1,9,10,11------->(9,10,11是正常球標準球)
如果平衡:
就可以說明1,2,3,4,5是標準球,結合上一次的比較結果,可以得出的是異常球為6,7,8且為重球,這樣從6,7,8裡面選擇兩個球比對一次即可得出結論,這樣就比較3次;
如果不平衡:
左側重: 則5為異常球(結合1,2,3,4
<5,6,7,8),這樣就比較2次;
左側輕: 異常球為2,3,4且為輕球,從三個球中選擇兩個球再稱一次,選擇輕的即可,這樣就比較3次.
華為軟體研發面試題1
1 區域性變數能否和全域性變數重名?答 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域性變數...
前端開發面試題
基礎題 1.談一談你對bootstrap的柵格布局的理解。2.談一談你對mvvm的理解。3.es6的展開運算子有使用過嗎?有什麼用處?4.let和var const的區別是什麼?5.最近有了解前端的發展嗎?有沒有學習什麼最新的前端技術?6.sessionstorage localstorage和co...
資料研發面試
阿里 一面 1.hive的mapreduce實現過程 2.hive中join的mapreduce過程 3.你在美團有遇到資料傾斜問題嗎,如何解決的 4.實時資料如何保證容錯性的 5.hashmap的實現原理 二面 1.你在工作中如何處理資料傾斜的 2.distinct和group by的區別 3.假...