房間裡有n-1位群眾和1位明星。每位群眾都認識該明星,群眾之間的認識情況未知,而該明星卻不認識任何一位群眾。假設你是機械人r2t2,具有問乙個人是否認識另乙個人的功能,每次耗費時間o(1)。請設計乙個最有演算法在這n個人中找出該明星,並分析複雜度。(不用寫**,不分析複雜度不得分)
先分析人物的屬性。
群眾 —— 至少認識乙個人
明星 —— 乙個人都不認識,但被所有人認識
利用明星被所有人認識的特點,有方法一
最直觀的,冒泡,從前往後比
設明星索引istar = 0
若1認識0,則1肯定不是明星,i++
若1不認識0,則0肯定不是明星,1可能是,istar = 1,i++
再比較2……
以此類推,
若i認識istar,則i肯定不是明星,跳過,i++
若i不認識istar,則istar肯定不是明星,更新istar = i,i++
最後留下的istar就是明星的索引
遍歷一遍,比較n-1次,複雜度o(n)
兩兩分組。
考查一組的情況:
* 若相互認識,肯定都不是,丟棄
* 若相互不認識,肯定都不是,丟棄
* 若a認識b,b不認識a,則a肯定不是明星,b可能是,丟棄a,b進入下一輪
共n/2,每組需要2次比較
以此類推,最壞情況,每次都是第三種情況
n + n/2 + n/4 + n/8 + ... + 1 = 2n-1
複雜度是o(2n)
若有多個明星,明星之間相互認識,明星不認識群眾,群眾認識所有明星呢?
按照方法一,找出乙個明星,然後遍歷一遍,找出該明星認識的所有明星。
複雜度o(2n)
2013騰訊暑期實習筆試
筆試題目由20道3分的不定項選擇題 注意是不定項選擇!博主悲劇就 於此,全部當單選來做,考完還納悶為什麼有的題目感覺幾個選項都對 以及10道4分的填空題目構成。範圍覆蓋了程式語言基礎 如巨集定義 資料結構 演算法的複雜度 二叉樹等 資料庫的一些概念 作業系統 記憶體管理 以及網路 協議 位址 的部分...
2023年阿里巴巴實習生筆試題
前幾天參加了阿里的筆試題,題目雖然很簡單,但是現在回想下發現出了不少問題,還是基礎不牢固啊。把這些題目寫出來也算是對自己的一種提公升吧。1.html題 國家名稱 網域名稱排名 中國 www.taobao.com 1 美國 epay www.epay.com 2 amazon www.epay.com...
微軟2013暑期實習筆試回憶
一共是20道選擇題 有可能多選 答對加分,答錯扣分,所以了不敢亂選啊,現在開始回憶一些題目 1 有1000瓶水,其中1瓶是有毒的,小老鼠如果喝了有毒的水會在乙個星期後死掉,問至少需要多少只小老鼠來做實驗,才能夠在一星期後選出有毒的一瓶水。我選的是10,2 10 1024 1000,原理跟1 n選擇器...