ai考拉的技術小哥翻箱底,翻到了以前高三的一道腦洞題,特意拿出來,跟大家一起來挑(懷)戰(念)一下題(青)目(春)。
題目是這樣的:
有12個大小一樣的鐵球,其中有一顆是劣質品,除了這個劣質品,其他11個重量都一樣,現在只有乙個天平⚖。請問無論遇到什麼情況,至少需要稱幾次才能找到這個劣質品。
從演算法的角度去解題, 相當於給了一條這樣的題目:給定乙個 n 位長度的陣列,裡面除了乙個數字與其他數不一樣,其他數字都一樣。
如輸入 [2, 2, 2, 1], n >= 3
要求:輸出 3
如輸入 [2, 2, 4, 2], n >= 3
要求:輸出 2
且:時間複雜度盡量小。
class
solution
for (int i = 1; i < nums.length; i++)
return -1;
}}複製**
這個是 $$o(n)$$ 的實現。
這裡如何優化演算法,就先不講了,本次還是重點講題目
一般的常規思路(如下圖)就是不斷對半平分:
可是第一次對半平分肯定就會出現不平衡的情況,那接下來該如何處理了呢?
第一次就遇到平衡的狀況就很好處理了,是最幸運的情況,一下子就將目標鎖定在這4個上面
接下來隨便用橙色1號,與3號/4號 去判斷就可以,得出結果了。
所以最好情況下就只要三次的情況下找出來了。
那接下來該是去稱 a 還是稱 b 呢?
問題接下來就變成了 如何在8個小球內找出乙個劣質小球。
看上去8個內找出唯一的問題小球還是需要3步及以上的。
那有沒有辦法在兩步內找出8個小球內的劣質小球呢。
(極其關鍵一步)
接下來會遇到兩種情況:
要留心剛剛藍球2,藍球3,藍球4 這一邊的天平一開始是往下還是往上的,
假如是往下的,說明劣質球是偏重的,
假如是往上的,說明劣質球是偏輕的,
第三次 : 對比藍球2,藍球3,找出劣質的。 若天平平衡,則劣質球是藍4
這個時候要觀察紅球2,紅球3,紅球4的天平, 相對於第二次稱時,上下是否反轉了
(這個也是關鍵)
2.2.1 若上下反轉了,說明劣質球就在紅1和藍1之間,但是這個時候你還是不知道到底劣質球是重點的還是輕點的。所以還需要多一次對比。(第三次)
2.2.2 若上下沒有反轉了,說明紅1和藍1,還有藍2,3,4都是正常的,問題出在紅2,紅3,紅4上。
此時紅2,紅3,紅4的天平上下代表了劣質品的輕重。
第三次稱下紅2,紅3 就可以找出劣質品了
所以,十二個球,無論遇到什麼情況,最少秤出的次數還是3次。
投資機構 梅耶爾不合格 不合拍
梅耶爾在分析師會議上稱 雅虎的產品和資產組合太過複雜,特別是一些資產不再符合我們的積極增長目標或分心於增長產品,難以贏得使用者和廣告客戶的支援。她還表示,雅虎在研究 戰略性替代方案 雖然她未詳細說明,但這句話常常意味著一家公司想 自己。雅虎稱,2015年第四季度實現營收12.7億美元,同比增長1.6...
部落格數量不合格反思
在這個月的部落格檢查中,我的部落格數量及日期沒有達到符合的標準,一小部分原因是這個月請了一些假去看病,但是更大的原因是對部落格這方面沒有相當的重視,覺得寫部落格沒有那麼重要,沒有意識到寫部落格對於我的好處以及對現在以及未來的重要性,把它當做了一件不重要的小事來看待,忽略了要寫部落格。部落格不僅僅只是...
bedtools不合格的使用介紹
參考基因組表示的是一種座標系統,比如說某乙個物種基因組大小為100bp,那麼他參考基因組就可以表示為 1,100 之後就可以用任意 x,y 表示這條參考基因組上的位置,這就是一種範圍資訊,x y這段區域可能是外顯子,也可能是內含子,可能是編碼區,也可能是基因間區,也有可能是乙個測序結果。因此rang...