百度面試題,大致意思是說,有個(gè)文件,文件很大不能一次性讀取(可能是不能一次性加載到內(nèi)存中),文件中存放的是IP地址,如何快速找出重復(fù)的IP地址?求指點(diǎn)思路。文件很大,可以逐行讀取,append到list中,取set,再取差集,不知是否可行?
2 回答

鳳凰求蠱
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
IPv4么…… 一共才 4Gi 個(gè)地址,到內(nèi)存里挖好坑,等著IP來跳。浪費(fèi)點(diǎn),用int8來存也就是4GB內(nèi)存,節(jié)省點(diǎn),用bit存的話只要500MB。思路可以活點(diǎn),其實(shí)我覺得給出IP地址這個(gè)限制條件就是在降低難度。
IPv6的話,可能就得分治?;舅悸肪褪窍劝磧?nèi)存能承受的長度去檢查地址的前幾位,碰撞了的丟同一個(gè)bucket里,然后再一個(gè)一個(gè)bucket地去看里面有沒有重的,往下也可以再分。其實(shí)DBMS整天干這事……
添加回答
舉報(bào)
0/150
提交
取消