九章演算法面試題19 最常訪問IP

2021-07-02 12:39:03 字數 445 閱讀 4342

將日誌檔案劃分成適度大小的m份存放到處理節點。

map節點將其計算的中間結果partition到r個區域,並告知master儲存位置,所有map節點工作完成之後,reduce節點首先讀入資料,然後以中間結果的key排序,對於相同key的中間結果呼叫使用者的reduce函式,輸出。

掃瞄reduce節點輸出的r個檔案一遍,可獲得訪問**度次數最多的ip。

該問題是經典的map-reduce問題。一般除了問最常訪問,還可能會問最常訪問的k個ip。一般來說,遇到這個問題要先回答map-reduce的解法。因為這是最常見的解法也是一般面試官的考點。如果面試官水平高一點,要進一步問你有沒有其他解法的話,該問題有很多概率演算法。能夠在極少的空間複雜度內,掃瞄一遍log即可得到top k frequent items(在一定的概率內)。有興趣的讀者,可以搜搜「sticky sampling」,」lossy counting」這兩個演算法。

九章演算法 Google面試題 內積

描述 給定長度為n的a陣列,長度為k的b陣列 你可以從a陣列裡取k個數 規則如下 即每次可以從a陣列的最左邊或者最右邊取走乙個數,取走的數從陣列中移除 將取出的ai按取出的順序組成c陣列 求b與c的內積最大值 b與c內積為 i 0k 1bi ci 解釋1 a 1,4,3,2,5 b 1,2,3,4 ...

九章演算法面試題32 小球排序

有紅黃藍三色的小球若干排成一列,這些小球進行排序,請使用盡量少的空間和時間。假設順序為紅色黃色藍色。用兩根指標從頭開始遍歷,第一根指標遇到非紅色時停下,如果第二根指標找到第一根指標之後的第乙個紅色停下,交換兩根指標所指顏色。重複上述過程。直到第二根指標找不到任何紅色。此時第一根指標到最後都是黃色或藍...

九章演算法面試題33 陣列波峰

乙個陣列a 1.n 假設陣列中沒有任何相鄰兩數相等,滿足a 1 n。a i 被稱為波峰,當且僅當a i a i 1 並且a i a i 1 請找到陣列中的乙個波峰。假設陣列中存在相鄰相等的數,該怎麼做?根據條件a 1 a n 可知a中一定存在波峰。用二分法,選擇中點mid,如果a mid 是波峰,則...