巧妙變換;及可憐的小老鼠分析
今日面試題:巧妙變換
輸入陣列[a1,a2,...,an,b1,b2,...,bn],建構函式,使得輸出為,[a1,b1,a2,b2,...,an,bn],注意:方法要是in-place的。
======================================
可憐的小老鼠分析
原題
有11瓶酒,只有一瓶有毒。喝酒之後,三天會死,只有三天時間。請問至少需要多少隻老鼠,可以找出9瓶沒有毒的酒。
分析
題目描述很簡單,可我們仍要抓住要點:
- 11瓶,1瓶有毒
- 喝酒之後,三天會死;只有三天時間->即使某一個老鼠沒有被毒死,也不會有時間重複利用了
- 要使用最少個數的老鼠,要找到9瓶沒有毒的
10瓶無毒的,為何要找到9瓶呢?老鼠開始喝酒,第一隻要喝哪些,第二隻要喝哪些呢?現在有什麼依據麼?顯然酒瓶和老鼠都是一樣的,不可區分的。那麼怎麼來選擇哪些老鼠喝哪瓶酒,進而進行判斷呢?這是這個題目的關鍵點、核心點。11個酒瓶,我們對其編號1-11,如下為二進位制的表示,看完二進位制的表示,也許很多同學,就明白了該如何選擇。
編號 | 二進位制 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
11 | 1011 |
觀察每一位的0和1的分佈情況,從右向左,第一位是1的,有6個情況;是0的,有5個情況。這樣,我們可以讓一隻老鼠喝掉都是1的,然後又兩種情況:
- 老鼠死了,說明有毒的那個瓶子的二進位制位從右到左第一位是1.
- 老鼠沒死,說明有毒的那個瓶子的二進位制位從右到左第一位是0.
同樣的,同時,另外兩隻老鼠測試第二位為1的瓶子以及第三位為1的瓶子,分別因為死或者沒死,得到0、1的情況。三隻老鼠,所有可能的情況如下
01情況 | 解釋 |
000 | 三個老鼠都沒死,只可能是1000號瓶子有毒,剩下10個都沒毒 |
001 | 可能有毒的是0001、1001,去掉這兩個,還有9個無毒 |
010 | 0101有毒,10個無毒 |
011 | 0011,1011可能有毒,9個確保無毒 |
100 | 0100有毒,10個無毒 |
101 | 0101有毒,10個無毒 |
110 | 0110有毒,10個無毒 |
111 | 0111有毒,10個無毒 |
根據上面的表格,得到,至少需要三個老鼠。此類的題目分析的思路,就是這樣的,要找到突破口:表示為二進位制的形式。
例如,1w瓶酒,只有一瓶有毒,只有三天時間,老鼠喝了之後,三天才會發作,至少需要多少隻老鼠,才能找到有毒的酒?一樣的思路,就是二進位制位數多了一些。
【分析完畢】
本文來自微信:待字閨中,2013-08-03釋出,原創@陳利人 ,歡迎大家繼續關注微信公眾賬號“待字閨中”。
相關文章
- 可憐的小老鼠;及Google賽馬分析Go
- 逆序;及巧妙變換分析
- 找陣列的波谷;及巧妙排序的分析陣列排序
- 巧妙排序;及相伴一生分析排序
- 萬能五筆2001註冊碼分析及暴力破解 ---可憐的思考者 (27千字)
- 巧妙運用clip-path,實現CSS形狀變換CSS
- 一款功能簡約到可憐的SQL 客戶端SQL客戶端
- 南京求職! 可憐的應屆生!(內附簡歷、作品)求職
- 灰度變換函式:對數及對比度拉伸變換函式
- 通過String的不變性案例分析Java變數的可變性Java變數
- 傅立葉變換和拉普拉斯變換的物理解釋及區別
- 非隔離DCDC變換器的CCM分析
- 巧妙更換網路登入密碼密碼
- 傅立葉變換頻域時域分析
- 可悲的西安軟體行業 可憐軟體開發人員 無奈的“碼農”行業
- 巧妙轉換ORACLE資料庫字符集Oracle資料庫
- 巧妙的CSSCSS
- PHP的可變變數名PHP變數
- 仿射變換及其變換矩陣的理解矩陣
- 小波變換與傅立葉變換的區別
- OpenGL中的座標變換、矩陣變換矩陣
- 可隨時變換使用者IP 的匿名瀏覽器(轉)瀏覽器
- OpenGL模型檢視變換、投影變換、視口變換模型
- sql monitor中timestamp變數轉換可識別格式SQL變數
- 巧妙的煎餅
- java日期時間各種變換及處理Java
- 資料庫變慢了的分析及解決辦法資料庫
- 巧妙改變某型別檔案的預設開啟方式(轉)型別
- 巧妙的有css合併圖片解決tab切換的背景圖片CSS
- Windows變慢原因分析及解決方法(轉)Windows
- 無需進入XP安全模式 巧妙替換檔案(轉)模式
- 【OpenCV-Python】:影像的傅立葉變換與逆傅立葉變換OpenCVPython
- RxJava 原始碼分析系列(四) -操作符變換原理RxJava原始碼
- Hough變換
- 傅立葉變換
- 微軟Surface Pro X拆解,自己就能換硬碟 可維修性變得更好,微軟硬碟
- 霍夫變換圓檢測原理及 OpenCV API 應用OpenCVAPI
- 【DWT筆記】傅立葉變換與小波變換筆記