騰訊面試題 要求找出中位數

2021-09-30 05:30:16 字數 626 閱讀 5569

在乙個檔案中有 10g 個整數,亂序排列,要求找出中位數。記憶體限制為 2g。只寫出思路即可。

答案:1,把整數分成256m段,每段可以用64位整數儲存該段資料個數,256m*8 = 2g記憶體,先清0

2,讀10g整數,把整數對映到256m段中,增加相應段的記數

3,掃瞄256m段的記數,找到中位數的段和中位數的段前面所有段的記數,可以把其他段的記憶體釋放

4,因中位數段的可能整數取值已經比較小(如果是32bit整數,當然如果是64bit整數的話,可以再次分段),對每個整數做乙個記數,再讀一次10g整數,只讀取中位數段對應的整數,並設定記數。

5,對新的記數掃瞄一次,即可找到中位數。

如果是32bit整數,讀10g整數2次,掃瞄256m記數一次,後一次記數因數量很小,可以忽略不記

(設是32bit整數,按無符號整數處理

整數分成256m段? 整數範圍是0 - 2^32 - 1 一共有4g種取值,4g/256m = 16,每16個數算一段 0-15是1段,16-31是一段,...

整數對映到256m段中? 如果整數是0-15,則增加第一段記數,如果整數是16-31,則增加第二段記數,...

其實可以不用分256m段,可以分的段數少一寫,這樣在掃瞄記數段時會快一些,還能節省一些記憶體)

騰訊面試題

題目 class aaa aaa pa 0x10000000 問1 pa 10 問2 char pa 10 問3 int pa 10 回答 1 0x10000000 10 16 雙位元組對齊 2 0x10000000 10 3 0x10000000 10 4 題目二 有乙個集合,由0 1000的數字...

騰訊面試題

版上看到的,好東西得記下來。1.有1到10w這10w個數,去除2個並打亂次序,如何找出那兩個數。不准用位圖!關鍵 x y 1 2 3 10w a 0 a 1 a 2 a 10w 1 根據qq號做hash,整個登入時間戳。3.有乙個江洋大盜,他每次寫信都是從一張報紙上剪下單詞,再把單詞貼在信上。假如某...

騰訊面試題

題目 兩個陣列a n b n 其中a n 的各個元素值已知,現給b i 賦值,b i a 0 a 1 a 2 a n 1 a i 要求 1.不准用除法運算 2.除了迴圈計數值,a n b n 外,不准再用其他任何變數 包括區域性變數,全域性變數等 3.滿足時間複雜度o n 空間複雜度o 1 pack...