• <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++博客 首頁 新隨筆 聯系 聚合 管理
              12 Posts :: 2 Stories :: 7 Comments :: 0 Trackbacks
            本題目出自@陳利人

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

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

            這個時候我想可以把問題轉換成一個整數數組,其中有個整數出現的次數超過一半,找出這個整數就OK了吧。要找出這個數組中出現次數超一半的值,本身這個算法應該很簡單,但是O(1)空間和O(n)的時間復雜度,還是有點傷腦筋的。。:(,內存又不貴,為啥O(1)啊。。

            因為那個數字出現的次數超過一半,我們可以想象一下,把那個數字標成1,其它的都是-1,把所有的數字加起來肯定大于0,對吧?因為超過一半嘛。。這個時候靈光乍現,用一個標桿來標志潛在的那個搜索詞,一個整數count表示它出現的次數(準確的說不是它的次數,后面會解釋),遍歷整個數組
            1)   如果當前的跟標桿一樣,count++
            2)   如果不相等,--count,若此時count為0,則把當前值置為標桿,count為1
            重復1), 2)即可,最后那個標桿即為最流行搜索詞。

            代碼簡單的我不能相信,以至于我覺得我肯定理解錯誤題目的意思了,不管怎么樣上下代碼 
             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 閱讀(356) 評論(0)  編輯 收藏 引用 所屬分類: Algorithm
            亚洲精品乱码久久久久久蜜桃| 久久成人永久免费播放| 色欲综合久久中文字幕网| 亚洲精品美女久久777777| 丁香狠狠色婷婷久久综合| 久久夜色精品国产www| 久久久久久曰本AV免费免费| 久久久久免费精品国产| 久久久久亚洲av综合波多野结衣| 97久久精品无码一区二区天美| 久久久久国色AV免费观看| 91久久精一区二区三区大全| 欧美午夜A∨大片久久| AV色综合久久天堂AV色综合在 | 久久精品国产99国产精品| 国产aⅴ激情无码久久| 国内精品欧美久久精品| 九九久久自然熟的香蕉图片| 亚洲国产小视频精品久久久三级 | 日韩人妻无码一区二区三区久久99| 久久国产精品99精品国产| 久久这里有精品| 久久久久国产亚洲AV麻豆| 一本久久a久久精品综合夜夜 | 国产精品久久新婚兰兰 | 久久人妻AV中文字幕| 欧美精品丝袜久久久中文字幕| 国内精品人妻无码久久久影院 | 久久亚洲精品国产精品婷婷| 久久久久久一区国产精品| 国产精品99久久久久久人| 久久狠狠高潮亚洲精品 | 久久久久亚洲AV成人网| 爱做久久久久久| 国产精品美女久久久免费| 国产女人aaa级久久久级| 国产精品VIDEOSSEX久久发布 | 久久66热人妻偷产精品9| 久久精品国产亚洲综合色| 久久婷婷综合中文字幕| 久久久精品无码专区不卡|