1一天總共有
3600*24 =86400秒。
定義乙個長度為86400的整數陣列int delta[
86400
],每個整數對應這一秒的人數變化值,可能為正也可能為負。開始時將陣列元素都初始化為0。
然後依次讀入每個使用者的登入時間和退出時間,將與登入時間對應的整數值加1,將與退出時間對應的整數值減1。
這樣處理一遍後陣列中儲存了每秒中的人數變化情況。
定義另外乙個長度為86400的整數陣列int online_num[
86400
0] = delta[0]。第n+1秒的人數online_num[n] = online_num[n-1] +delta[n]。
2. 從10g個數中找到中數 在乙個檔案中有 10g 個整數,亂序排列,要求找出中位數。記憶體限制為 2g。
不妨假設10g個整數是64bit的。
2g記憶體可以存放256m個64bit整數。
我們可以將64bit的整數空間平均分成256m個取值範圍,用2g的記憶體對每個取值範圍內出現整數個數進行統計。這樣遍歷一邊10g整數後,我們便知道中數在那個範圍內出現,以及這個範圍內總共出現了多少個整數。
如果中數所在範圍出現的整數比較少,我們就可以對這個範圍內的整數進行排序,找到中數。如果這個範圍內出現的整數比較多,我們還可以採用同樣的方法將此範圍再次分成多個更小的範圍(256m=2^28,所以最多需要3次就可以將此範圍縮小到1,也就找到了中數)
3. 判斷數字是否出現在40億個數中? 給40億個不重複的unsigned int的整數,沒排過序的,然後再給幾個數,如何快速判斷這幾個數是否在那40億個數當中?unsignedint 的取值範圍是0到2^32-1。我們可以申請連續的2^32/8=512m的記憶體,用每乙個bit對應乙個unsigned int數字。首先將512m記憶體都初始化為0,然後每處理乙個數字就將其對應的bit設定為1。當需要查詢時,直接找到對應bit,看其值是0還是1即可。
騰訊的遞迴筆試題目
題目是這樣的 f m,n m n 1 if m n 0 f m,n f m 1,f m,n 1 填空是 top 0 do elsewhile 1 top printf f d n f 解答過程 這是一道遞迴題目,說實話,第一次看到這種遞迴題目,還是感覺比較害怕,畢竟 f m,n f m 1,f m,...
騰訊的筆試題目(E卷)
還沒有開始苦練基本功的人,只涉及到語言問題和簡單的 資料結構,其他的作業系統,編譯原理,離散數學,軟體 工程,計算機原理,體系結構等等無一涉及,題目很多,有1個選擇題想不來起來是什麼了,題號不與原試題相符 希望師弟師妹可以 答案,從中學到筆試的經驗 1 計算 a b 2 運算子優先順序問題 2 根據...
騰訊2013研發筆試題目
1.資料庫 資料庫中有可能會存在不一致的資料。造成資料不一致的原因主要有 如果資料庫中存在冗餘資料,比如兩張表中都儲存了使用者的位址,在使用者的位址發生改變時,如果只更新了一張表中的資料,那麼這兩張表中就有了不一致的資料。比如某個訂票系統中,兩個使用者在同一時間訂同一張票,如果併發控制不當,可能會導...