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