- 相關推薦
筆試題(統(tǒng)計人數(shù))
筆試題:統(tǒng)計論壇在線人數(shù)分布
求一個論壇的在線人數(shù),假設有一個論壇,其注冊ID有兩億個,每個ID從登陸到退出會向一個日志文件中記下登陸時間和退出時間,要求寫一個算法統(tǒng)計一天中論壇的用戶在線分布,取樣粒度為秒,
筆試題(統(tǒng)計人數(shù))
。分析:
一天總共有 3600*24 = 86400秒。
定義一個長度為86400的整數(shù)數(shù)組int delta[86400],每個整數(shù)對應這一秒的人數(shù)變化值,可能為正也可能為負。開始時將數(shù)組元素都初始化為0。
然后依次讀入每個用戶的登錄時間和退出時間,將與登錄時間對應的整數(shù)值加1,將與退出時間對應的整數(shù)值減1。
這樣處理一遍后數(shù)組中存儲了每秒中的人數(shù)變化情況。
定義另外一個長度為86400的整數(shù)數(shù)組int online_num[86400],每個整數(shù)對應這一秒的論壇在線人數(shù)。
假設一天開始時論壇在線人數(shù)為0,則第1秒的人數(shù)online_num[0] = delta[0],
資料共享平臺
《筆試題(統(tǒng)計人數(shù))》(http://www.ishadingyu.com)。第n+1秒的人數(shù)online_num[n] = online_num[n-1] + delta[n]。這樣我們就獲得了一天中任意時間的在線人數(shù)。
筆試題:從10G個數(shù)中找到中數(shù)
在一個文件中有 10G 個整數(shù),亂序排列,要求找出中位數(shù)。內存限制為 2G。
分析:
不妨假設10G個整數(shù)是64bit的。
2G內存可以存放256M個64bit整數(shù)。
我們可以將64bit的整數(shù)空間平均分成256M個取值范圍,用2G的內存對每個取值范圍內出現(xiàn)整數(shù)個數(shù)進行統(tǒng)計。這樣遍歷一邊10G整數(shù)后,我們便知道中數(shù)在那個范圍內出現(xiàn),以及這個范圍內總共出現(xiàn)了多少個整數(shù)。
如果中數(shù)所在范圍出現(xiàn)的整數(shù)比較少,我們就可以對這個范圍內的整數(shù)進行排序,找到中數(shù)。如果這個范圍內出現(xiàn)的整數(shù)比較多,我們還可以采用同樣的方法將此范圍再次分成多個更小的范圍(256M=2^28,所以最多需要3次就可以將此范圍縮小到1,也就找到了中數(shù))。
【筆試題統(tǒng)計人數(shù)】相關文章:
360筆試題目06-27
筆美國國家儀器試題目09-23
搜狐產(chǎn)品筆歸分享筆試題目07-05
新浪筆經(jīng)04-27
新聞總署筆經(jīng)10-13
IBM公司筆經(jīng)09-15
營銷卷筆經(jīng)10-25
科勒筆經(jīng)09-23