Top K問題(java面試題之演算法類)

2021-08-31 03:27:56 字數 291 閱讀 3449

top-k問題,不難,思路優化過程:

1.全域性排序  o(n*lg(n))

2.區域性排序,只排序topk個數,氣泡排序前k個,o(n*k)

3.堆排序,topk個數也不用排序了,o(n*lg(k))

4.分治法,每個分支「都要」遞迴,例如:快速排序,o(n*lg(n))

5.減治法,「只要」遞迴乙個分支,例如:二分查詢o(lg(n)),隨機選擇o(n)

6.topk的另乙個解法:隨機選擇+partition

7.位元位圖法(bitmap)計數

另乙個:

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

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

面試題之Java 集合

方法 size 返回集合中的項數。isempty 判斷集合中是否為空 contains object 判斷集合中是否包含某項 clear add e 從集合中新增某項 remove object 從集合中刪除某項 iterator 遍歷集合 2.1.實現iterable介面的的類可以擁有增強for迴...

C 面試題之程式設計其他問題面試題

程式設計其他問題面試題.cpp main主函式執行完畢後,是否可能會再執行一段 給出說明。美國某著名網路開發公司2005年面試題 答案 如果需要加入一段在main退出後執行的 可以使用atexit 函式註冊乙個函式,如下 include int atexit void funtion void in...