• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            coding everyday

            編程面試題 https://interview.codeplex.com

            C++博客 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
              12 Posts :: 2 Stories :: 7 Comments :: 0 Trackbacks
            本題目出自@陳利人

            問(wèn)題:
            #Google面試題#給你一天的Google搜索日志,你怎么設(shè)計(jì)算法找出是否有一個(gè)搜索詞,它出現(xiàn)的頻率占所有搜索的一半以上?如果肯定有一個(gè)搜索詞占大多數(shù),你能怎么提高你的算法找到它?再假定搜索日志就是內(nèi)存中的一個(gè)數(shù)組,能否有O(1)空間,O(n)時(shí)間的算法?

            剛看到這個(gè)題目的時(shí)間嚇壞了,好難啊,無(wú)從下手啊,為自己的之上捉急啊。。下班的班車(chē)上開(kāi)始想這個(gè)問(wèn)題,開(kāi)始分析,其實(shí)這個(gè)搜索日志就是一個(gè)搜索詞的集合嘛,甭管它有多大,總可以分成若干堆吧。既然這個(gè)搜索詞超過(guò)一半,那么在這若干堆中分別找出來(lái)最流行的詞中,也應(yīng)該占一半吧。(這個(gè)應(yīng)該沒(méi)有理解錯(cuò)吧。)

            這個(gè)時(shí)候我想可以把問(wèn)題轉(zhuǎn)換成一個(gè)整數(shù)數(shù)組,其中有個(gè)整數(shù)出現(xiàn)的次數(shù)超過(guò)一半,找出這個(gè)整數(shù)就OK了吧。要找出這個(gè)數(shù)組中出現(xiàn)次數(shù)超一半的值,本身這個(gè)算法應(yīng)該很簡(jiǎn)單,但是O(1)空間和O(n)的時(shí)間復(fù)雜度,還是有點(diǎn)傷腦筋的。。:(,內(nèi)存又不貴,為啥O(1)啊。。

            因?yàn)槟莻€(gè)數(shù)字出現(xiàn)的次數(shù)超過(guò)一半,我們可以想象一下,把那個(gè)數(shù)字標(biāo)成1,其它的都是-1,把所有的數(shù)字加起來(lái)肯定大于0,對(duì)吧?因?yàn)槌^(guò)一半嘛。。這個(gè)時(shí)候靈光乍現(xiàn),用一個(gè)標(biāo)桿來(lái)標(biāo)志潛在的那個(gè)搜索詞,一個(gè)整數(shù)count表示它出現(xiàn)的次數(shù)(準(zhǔn)確的說(shuō)不是它的次數(shù),后面會(huì)解釋?zhuān)闅v整個(gè)數(shù)組
            1)   如果當(dāng)前的跟標(biāo)桿一樣,count++
            2)   如果不相等,--count,若此時(shí)count為0,則把當(dāng)前值置為標(biāo)桿,count為1
            重復(fù)1), 2)即可,最后那個(gè)標(biāo)桿即為最流行搜索詞。

            代碼簡(jiǎn)單的我不能相信,以至于我覺(jué)得我肯定理解錯(cuò)誤題目的意思了,不管怎么樣上下代碼 
             1 // Get the most popular searching keyword in Google. :)
             2 template<typename T>
             3 T get_most_popular_keyword(const T *list, int size) {
             4     T result = list[0];
             5     int count = 0;
             6 
             7     for (int i=0; i<size; i++) {
             8         if (list[i] == result)
             9             count++;
            10         else {
            11             if (--count == 0) {
            12                 count = 1;
            13                 result = list[i];
            14             }
            15         }
            16     }
            17 
            18     return result;
            19 }
            posted on 2013-07-02 21:10 everyday 閱讀(355) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): Algorithm
            精品久久久久久久久久久久久久久| 开心久久婷婷综合中文字幕| 国产精品久久久天天影视| 青青青国产精品国产精品久久久久| 久久精品国产一区二区三区不卡 | 亚洲va中文字幕无码久久| 97久久香蕉国产线看观看| 久久综合色之久久综合| 国产精品久久久久久一区二区三区| 久久一区二区三区99| 国产精品久久久久久| 色综合久久无码中文字幕| 久久久久99精品成人片牛牛影视 | 无码精品久久一区二区三区| 精品国际久久久久999波多野| 久久人搡人人玩人妻精品首页| AV色综合久久天堂AV色综合在| 噜噜噜色噜噜噜久久| 精品无码久久久久久国产| 国产精品久久久久影院嫩草| 99久久夜色精品国产网站| 一级做a爰片久久毛片看看| 久久精品国产清自在天天线| 久久99毛片免费观看不卡| 久久久一本精品99久久精品66 | 久久亚洲精品视频| 久久久久久毛片免费播放| 亚洲中文久久精品无码| 亚洲午夜久久久影院| 久久久久久国产a免费观看黄色大片 | 亚洲综合久久综合激情久久| 久久亚洲私人国产精品| 亚洲国产精品无码久久久蜜芽 | 中文字幕一区二区三区久久网站| 久久久久亚洲AV无码永不| 日本欧美久久久久免费播放网| 一本色道久久综合亚洲精品| 午夜天堂av天堂久久久| 2021少妇久久久久久久久久| 国产精品99久久久久久人| 日本久久久精品中文字幕|