TopK問題 百度面試

2021-09-12 10:29:04 字數 791 閱讀 3116

題目描述(easy)

找到最大的十個數 and 如果檔案很大,不能一次讀入

演算法分析

1. 快排的partition函式,以第k個數作為key時,大於k的右邊的數即為所求;

2. 構建小頂堆;

partition實現:

class solution  else if (loc > k) 

}return vector(input.begin(), input.begin()+k);

}int partition(vector&arr, int start, int end)

arr[start] = key;

return start;

}};

最小堆實現:

#include#include#include #include using namespace std;

int main()

sort_heap(max_heap.begin(), max_heap.end(), greater());

for (int i = 0; i < n; ++i)

cout << max_heap[i] << " ";

cout << endl;

return 0;

}

面試集錦之 Top K問題(百度面試題)

解題思路 step1 查詢統計 第一種就是進行排序了,可排序的方法有很多種,最簡單的就是直接排序。可是如果單純使用內排序將行不通,因為255b 1千萬 2.3.g,所以如果一次性的將所有資料讀入直接進行排序時行不通的。所以我們要借助內排序和外排序的結合對其進行排序。知識補充 何為內排序和外排序。我們...

Top K演算法詳細解析 百度面試

搜尋引擎會通過日誌檔案把使用者每次檢索使用的所有檢索串都記錄下來,每個查詢串的長度為1 255位元組。假設目前有一千萬個記錄,這些查詢串的重複度比較高,雖然總數是1千萬,但如果除去重複後,不超過3百萬個。乙個查詢串的重複度越高,說明查詢它的使用者越多,也就是越熱門。請你統計最熱門的10個查詢串,要求...

Top K演算法詳細解析 百度面試

搜尋引擎會通過日誌檔案把使用者每次檢索使用的所有檢索串都記錄下來,每個查詢串的長度為1 255位元組。假設目前有一千萬個記錄,這些查詢串的重複度比較高,雖然總數是1千萬,但如果除去重複後,不超過3百萬個。乙個查詢串的重複度越高,說明查詢它的使用者越多,也就是越熱門。請你統計最熱門的10個查詢串,要求...