海量資料處理 找出現次數最多的那些

2021-05-07 12:23:15 字數 1429 閱讀 3582

回憶一下tx的二面,有一道題是這樣的:

假設有1kw個身份證號,以及他們對應的資料。身份證號可能重複,要求找出出現次數最多的身份證號。

乙個很顯然的做法是,hash之,o(n)搞定。這前提是記憶體中可以存下。

如果是中國的13億人口,記憶體中存不下呢?借用磁碟,多次掃瞄?磁碟io的速度慢得能讓你瘋掉。

這時候你終於感受到,中國人口真***多阿。。。

--然後再看看今天的astar複賽第一題:

百 度每天都會接受數億的查詢請求, 如何在這麼多的查詢(query)中找出高頻的query是乙個不小的挑戰. 而你的任務則更加艱鉅, 你需要在極其有限的資源下來找出這些高頻的query.(使用記憶體不得多於1mb) 。輸入檔案是一行乙個query, 以檔案結束符結尾。每個query位元組數l(乙個漢字兩個位元組)滿足:0引用

輸出你認為最高頻的100個query

# include

# include

# include

# include

# include

using

namespace std;

const

int hashm = 103;

inline

int hash(

char *p)

return ((t & 0x7fffffff) % hashm); }

struct node_t };

struct great_node_t

great_node_t(

const

char *_s,

int &_count) };

node_t tbl[hashm][100];

int tblc[hashm];

vectorans;

int main()

while (

scanf ("%s", t) == 1)

if (tbl[v][i].count < tbl[v][j].count) }

if (i == tblc[v])

else }

}for (i = 0; i < hashm; ++i) }

sort(ans.begin(), ans.end());

for (

int i = 0; i < 100 && i < (

int )ans.size(); ++i)

return 0; }

//資料生成** #

找出出現次數最多的字母

找出出現次數最多的字母 description 找出出現次數最多的字母input現在給你一行密文,全部由小寫字母組成 不超過100個 你要找出出現次數最多的那個字母 output 每組輸出1行,輸出出現次數最多的那個字母 sample input aaaaaaabbc nnnnnnnasnnnnas...

出現次數最多的整數

問題描述 編寫乙個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數n也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值列印出來。如果有兩個元素值出現的次數相同,即並列第一,那麼只列印比較小的那個值。輸入格式 第一行是乙個整數n,n 2...

出現次數最多的整數

問題描述 編寫乙個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數n也是由使用者輸入的,最多不會超過20。然後程式將對這個陣列進行統計,把出現次數最多的那個陣列元素值列印出來。如果有兩個元素值出現的次數相同,即並列第一,那麼只列印比較小的那個值。輸入格式 第一行是乙個整數n,n 2...