騰訊筆試一題多解
一個(gè)文件中有40億個(gè)整數(shù),每個(gè)整數(shù)為四個(gè)字節(jié),內(nèi)存為1GB,寫出一個(gè)算法:求出這個(gè)文件里的整數(shù)里不包含的一個(gè)整數(shù)
答:方法一: 4個(gè)字節(jié)表示的整數(shù),總共只有2^32約等于4G個(gè)可能。
為了簡單起見,可以假設(shè)都是無符號整數(shù)。
分配500MB內(nèi)存,每一bit代表一個(gè)整數(shù),剛好可以表示完4個(gè)字節(jié)的整數(shù),初始值為0。基本思想每讀入一個(gè)數(shù),就把它對應(yīng)的bit位置為1,處理完40G個(gè)數(shù)后,對500M的'內(nèi)存遍歷,找出一個(gè)bit為0的位,輸出對應(yīng)的整數(shù)就是未出現(xiàn)的。算法流程:
1)分配500MB內(nèi)存buf,初始化為0
2)unsigned int x=0×1;
for each int j in file
buf=buf ¦x < <j;
end
(3) for(unsigned int i=0; i <= 0xffffffff; i++)
if (!(buf & x < <i))
{
output(i);
break;
}
以上只是針對無符號的,有符號的整數(shù)可以依此類推。
【騰訊筆試一題多解】相關(guān)文章:
2017騰訊筆試題07-21
騰訊技術(shù)筆試題12-20
騰訊運(yùn)營筆試題12-20
騰訊筆試題目初試11-13
騰訊前端筆試題目01-15
騰訊商業(yè)分析筆試題06-28
騰訊校招筆試題01-16
騰訊技術(shù)筆試題目01-16
騰訊技術(shù)綜合筆試題01-15